web-dev-qa-db-fra.com

Ajout d'un certificat auto-signé à la "liste de confiance"

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?

102
Naftuli Kay

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.

97
Drav Sloan

Approche non interactive

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
  • Testé et fonctionne sur debian 5/6 et Ubuntu 14.04.
  • Pour plus d'informations, voir 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.

62
oDDsKooL

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.

8
user7610

En centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
5
dragonfly

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;
5
3ronco