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

88

J'ai généré un certificat auto-signé pour mon serveur de build et je voudrais faire confiance au certificat sur ma machine, car j'ai créé la clé moi-même et j'en ai marre de voir des avertissements.

Je suis sur Ubuntu 12.04. Comment puis - je prendre le certificat et la confiance dans le monde afin que les navigateurs (Google Chrome), les services publics CLI (wget, curl), et les langages de programmation (Python, Java, etc.) font confiance à la connexion à https://mysite.com sans demander des questions?

Naftuli Kay
la source
Tous les fichiers TLS doivent être vectorisés via OpenSSL, c’est l’endroit idéal pour rechercher de la documentation. Dans ce cas, gagravarr.org/writing/openssl-certs/… semble utile.
msw

Réponses:

88

La réponse simple à cette question est que chaque application le traitera différemment.

OpenSSL et GNUTLS (les bibliothèques de traitement de certificats les plus largement utilisées pour traiter les certificats signés) se comportent différemment dans le traitement des certificats, ce qui complique également le problème. De plus, les systèmes d'exploitation utilisent différents mécanismes pour utiliser la "racine" utilisée par la plupart des sites Web.

Cela mis à part, en donnant l'exemple de Debian. Installez le ca-certificatespaquet:

apt-get install ca-certificates

Vous copiez ensuite la moitié publique de votre certificat de CA non approuvé (celui que vous utilisez pour signer votre CSR) dans le répertoire du certificat de CA (en tant que root):

cp cacert.pem /usr/share/ca-certificates

Et faites-le reconstruire le répertoire avec votre certificat inclus, lancez en tant que root:

dpkg-reconfigure ca-certificates

et sélectionnez l' askoption, faites défiler jusqu'à votre certificat, marquez-le pour l'inclusion et sélectionnez ok.

La plupart des navigateurs utilisent leur propre base de données d'autorité de certification et des outils tels que ceux-ci certutildoivent donc être utilisés pour modifier leur contenu (sur Debian fournie par le libnss3-toolspaquet). Par exemple, avec Chrome, vous exécutez quelque chose dans le sens suivant:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefox vous permettra de rechercher le certificat sur le disque, de reconnaître un fichier de certificat, puis de l’importer dans la liste des autorités de certification racines.

La plupart des autres commandes, telles que les curloptions de prise de ligne de commande que vous pouvez utiliser pour pointer sur votre autorité de certification,

 curl --cacert  /path/to/CA/cert.file https://...

ou abandonner complètement la validation SSL

 curl --insecure https://...

Le reste nécessitera une enquête individuelle si le ca-certificatesmême truc ne le règle pas pour cette application particulière.

Drav Sloan
la source
En outre, comme indiqué ici , l'ajout de certificats de CA pour Java est également une question distincte.
Naftuli Kay
2
Après avoir copié le certificat dans / usr / share / ca-certificates, je ne le vois pas dans la dpkg-reconfigure ca-certificatesliste. Qu'est-ce que je fais mal?
Georges Dupéron
19
@ GeorgesDupéron C'est ce qui m'est arrivé. Je l'ai résolu en renommant le cert de whatever.pemà whatever.crt.
Bonjour le monde
2
Pour votre information, j'ai eu un fichier de certificat nommé .cer, et cela n'a pas fonctionné. J'ai dû le renommer .crtpour qu'il soit reconnu.
Tri Nguyen
54

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 & Ubuntu 14.04.
  • Pour plus d'informations, voir man update-ca-certificates

Cette méthode est préférable à celle de @ Drav, car elle /usr/share/est généralement réservée aux fichiers ajoutés par le système d'exploitation / apt-get.

ODDsKooL
la source
4
Il est préférable de copier les fichiers /usr/local/share/ca-certificates/comme indiqué dans les pages de
manuel
3
FYI le A doit être un .crt, j'ai trouvé .certréclamé qu'il a été ajouté mais n'a pas aidé
KCD
6

Sur Fedora 23, ajoutez le fichier .pem ou .der à /etc/pki/ca-trust/source/anchors/et exécutez-le sudo update-ca-trust extract.

Voir man update-ca-trustpour plus de détails, par exemple s'il faut utiliser / etc ou / usr.

utilisateur7610
la source
4

En centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
libellule
la source
Quand dois- openssl connectje spécifier un dossier / anchors? Je reçois toujours une erreur "self signed certs
Janac Meena
2

Approche non interactive (octobre 18)
pour les systèmes récents basés sur Debian

Il y a une différence entre ajouter un certificat au magasin de l'hôte et l'activer pour que les applications l'utilisent vraiment. Un certificat existant dans le magasin n'est pas nécessairement utilisé (bien que je dois admettre que beaucoup de paquets se trompent quand même)
Cela peut être déroutant lorsque vous configurez un paquet qui considère /etc/ca-certificate.confet refuse simplement d'utiliser votre certificat alors qu'il a été ajouté sans erreur. Vous devez indiquer update-ca-certificatesexplicitement (non seulement copier mais) activer le certificat en l'ajoutant à /etc/ca-certificate.confou /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, ici, 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;
3ronco
la source