J'ai généré un certificat auto-signé pour mon serveur de build et j'aimerais faire confiance au certificat sur ma machine à l'échelle mondiale, car j'ai créé la clé moi-même et j'en ai assez de voir les avertissements.
Je suis sur Ubuntu 12.04. Comment puis-je prendre le certificat et lui faire confiance globalement afin que les navigateurs (Google Chrome), les utilitaires CLI (wget, curl) et les langages de programmation (Python, Java, etc.) fassent confiance à la connexion à https: // mysite .com sans poser de questions?
La réponse simple à cela est que pratiquement chaque application la traitera différemment.
OpenSSL et GNUTLS (les bibliothèques de traitement de certificats les plus utilisées pour gérer les certificats signés) se comportent également différemment dans leur traitement des certificats, ce qui complique également le problème. Les systèmes d'exploitation utilisent également différents mécanismes pour utiliser l '"autorité de certification racine" utilisée par la plupart des sites Web.
Cela mis à part, en donnant Debian comme exemple. Installez le ca-certificates
paquet:
apt-get install ca-certificates
Vous copiez ensuite la moitié publique de votre certificat CA non fiable (celui que vous utilisez pour signer votre CSR) dans le répertoire du certificat CA (en tant que root):
cp cacert.pem /usr/share/ca-certificates
Et obtenez-le pour reconstruire le répertoire avec votre certificat inclus, exécutez-le en tant que root:
dpkg-reconfigure ca-certificates
et sélectionnez l'option ask
, faites défiler jusqu'à votre certificat, marquez-le pour inclusion et sélectionnez ok.
La plupart des navigateurs utilisent leur propre base de données CA, et donc des outils comme certutil
doivent être utilisés pour modifier leur contenu (sur Debian qui est fourni par le libnss3-tools
paquet). Par exemple, avec Chrome vous exécutez quelque chose comme:
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file
Firefox vous permettra de parcourir le certificat sur le disque, de lui reconnaître un fichier de certificat, puis de l'importer dans la liste racine de l'autorité de certification.
La plupart des autres commandes telles que curl
prennent des commutateurs de ligne de commande que vous pouvez utiliser pour pointer vers votre autorité de certification,
curl --cacert /path/to/CA/cert.file https://...
ou supprimez complètement la validation SSL
curl --insecure https://...
Les autres devront faire l'objet d'une enquête individuelle si le ca-certificates
like trick ne le trie pas pour cette application particulière.
Pour une utilisation dans un contexte non interactif (par exemple une recette de chef), vous pouvez utiliser la séquence suivante.
Sudo cp my.crt /usr/local/share/ca-certificates/
Sudo update-ca-certificates
man update-ca-certificates
Cette méthode est préférée à la méthode de @ Drav, car /usr/share/
est généralement réservé aux fichiers ajoutés par l'OS/apt-get
.
Sur Fedora 23, ajoutez le fichier .pem ou .der à /etc/pki/ca-trust/source/anchors/
et courir Sudo update-ca-trust extract
.
Voir man update-ca-trust
pour plus de détails, par exemple si vous souhaitez utiliser/etc ou/usr.
En centos:
cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
Approche non interactive (Oct'18)
pour les systèmes récents basés sur Debian
Il existe une distinction entre l'ajout d'un certificat au magasin de l'hôte et son activation afin que les applications les utilisent vraiment. Un certificat existant dans le magasin n'est pas nécessairement utilisé (bien que je dois admettre que de nombreux packages se trompent de toute façon)
Cela peut devenir déroutant lorsque vous configurez un package qui prend en compte /etc/ca-certificate.conf
et refuse simplement d'utiliser votre cert bien qu'il ait été ajouté sans erreur. Vous devez dire update-ca-certificates
explicitement pour (pas seulement copier mais) activer le certificat en l'ajoutant à /etc/ca-certificate.conf
ou /etc/ca-certificate/update.d
.
CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
# notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;
Maintenant, cela devient confus car il existe un moyen de faire implicitement confiance à un certificat en utilisant un chemin différent:
CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;