Mon travail a décidé de délivrer sa propre autorité de certification (CA) pour gérer différents aspects de notre travail en toute sécurité, sans avoir à payer pour des certificats.
Ils m'ont envoyé un fichier .pem
et je ne sais pas comment l'ajouter à mon installation Ubuntu. Les instructions envoyées étaient les suivantes: "Un double-clic sur ce dernier devrait l’installer."
Comment je procède? Dois-je faire quelque chose avec OpenSSL pour créer un fichier .key
, .csr
ou .crt
?
Copiez votre certificat au format PEM (le format qui contient ----BEGIN CERTIFICATE----
) dans /usr/local/share/ca-certificates
et nommez-le avec une extension de fichier .crt
.
Ensuite, lancez Sudo update-ca-certificates
.
Avertissements: Cette installation concerne uniquement les produits qui utilisent ce magasin de certificats. Certains produits peuvent utiliser d'autres magasins de certificats; Si vous utilisez ces produits, vous devrez également ajouter ce certificat de CA à ces autres magasins de certificats. ( Instructions Firefox , Instructions Chrome , Instructions Java )
Vous pouvez vérifier si cela a fonctionné en recherchant le certificat que vous venez d'ajouter dans /etc/ssl/certs/ca-certificates.crt
(qui est simplement une longue liste de tous les certificats de votre autorité de certification approuvée concaténés ensemble).
Vous pouvez également utiliser le client s_client d'OpenSSL en essayant de vous connecter à un serveur dont vous savez qu'il utilise un certificat signé par l'autorité de certification que vous venez d'installer.
$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs
CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = [email protected]
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/[email protected]
... snip lots of output ...
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1392837700
Timeout : 300 (sec)
Verify return code: 0 (ok)
La première chose à rechercher est la chaîne de certificats située en haut de la sortie. Cela devrait afficher l'autorité de certification en tant qu'émetteur (à côté de i:
). Cela vous indique que le serveur présente un certificat signé par l'autorité de certification que vous installez.
Deuxièmement, recherchez le verify return code
à la fin pour être défini sur 0 (ok)
.
update-ca-certificates is a program that updates the directory
/etc/ssl/certs to hold SSL certificates and generates certificates.crt,
a concatenated single-file list of certificates.
It reads the file /etc/ca-certificates.conf. Each line gives a pathname
of a CA certificate under /usr/share/ca-certificates that should be
trusted. Lines that begin with "#" are comment lines and thus ignored.
Lines that begin with "!" are deselected, causing the deactivation of
the CA certificate in question.
Furthermore all certificates found below /usr/local/share/ca-
certificates are also included as implicitly trusted.
D'après ce qui précède, je déduirais que le moyen préféré pour importer des fichiers de certificat locaux dans le magasin sécurisé est de les mettre dans /usr/local/share/ca-certificates
, puis d'exécuter update-ca-certificates
. Vous n'avez pas besoin de toucher /etc/ssl/certs
directement.
J'ai eu le même problème, et j'ai dû copier le fichier .pem
dans /usr/local/share/ca-certificates
, en le renommant .crt
. Le fichier .cer
peut facilement être converti en .pem
, avec openssl, par exemple, si vous ne possédez pas le .pem
.
Après avoir copié le fichier, vous devez exécuter Sudo update-ca-certificates
.
Les autres réponses concernant update-ca-certificates
sont correctes pour les applications lues dans le magasin de certificats du système. Pour Chrome et Firefox, et probablement d’autres, le certificat doit être placé dans nssdb, le backend de la bibliothèque Mozilla NSS.
De https://code.google.com/p/chromium/wiki/LinuxCertManagement :
Par exemple, pour faire confiance à un certificat de CA racine pour l’émission de certificats de serveur SSL, utilisez
certutil -d sql: $ HOME/.pki/nssdb -A -t "C ," -n <surnom du certificat> -i <nom du certificat>
Où <certificate nickname>
est arbitraire et <certificate filename>
est votre fichier .pem ou .crt.
Autres références utiles:
certutil
page de manuel décrivant les paramètres utilisés ci-dessus: https://developer.mozilla.org/en-US/docs/NSS_reference/NSS_tools_:_certutilPour les nouvelles versions basées sur Debian, vous devrez peut-être exécuter:
Sudo dpkg-reconfigure ca-certificates
REMARQUE: Sudo dpkg-reconfigure appelle ca-certificats en interne et met à jour ses certificats
Bien sûr, vous devrez toujours copier le certificat (fichier .crt) dans/usr/share/ca-certificates avant de faire ceci :)
En vous basant sur réponse de dwmw2, vous pouvez indiquer aux applications qui utilisent NSS pour la gestion de certificats d'utiliser le magasin de données de confiance du système.
libnss3
est livré par défaut avec un ensemble en lecture seule de certificats d'autorité de certification racine (libnssckbi.so
). Par conséquent, la plupart du temps, vous devez les ajouter manuellement vous-même au magasin de clés de confiance de l'utilisateur local situé dans $HOME/.pki/nssdb
. p11-kit
offre un remplacement instantané pour libnssckbi.so
qui agit en tant qu'adaptateur pour les certificats racine à l'échelle du système installés dans /etc/ssl/certs
.
Modifier:
Il semble y avoir plus de versions de libnssckbi.so
que de libnss3
. Voici un script pour les trouver tous, les sauvegarder et les remplacer par des liens vers p11-kit
:
Sudo apt-get update && Sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
Sudo mv $line ${line}.bak
Sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done
Instructions d'origine:
Pour ce faire, installez p11-kit
et libnss3
(s'ils ne sont pas déjà installés):
Sudo apt-get update && Sudo apt-get install -y p11-kit libnss3
Sauvegardez ensuite le libnssckbi.so
existant fourni par libnss3
:
Sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak
Enfin, créez le lien symbolique:
Sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
Pour confirmer que cela a fonctionné, vous pouvez exécuter ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
et le lien devrait s'afficher:
lrwxrwxrwx 1 root root 49 Apr 9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
Désormais, si vous ajoutez un certificat au magasin CA à l'aide de update-ca-certificates
, ces certificats seront désormais disponibles pour les applications utilisant NSS (libnss3
), telles que Chrome.
Comme indiqué précédemment, diverses applications utilisant NSS ont leur propre magasin de certificats. Dans l'état actuel des choses sur Ubuntu, vous devez utiliser manuellement certutil
pour ajouter vos autorités de certification pour chaque application, pour chaque utilisateur.
Dans d'autres distributions telles que Fedora, ce genre de choses fonctionne avec Just Works ™ et vous devriez créer un bogue contre toutes les applications qui n'approuvent pas automatiquement les autorités de certification que vous installez avec update-ca-trust
.
Vous pouvez également résoudre ce problème dans Ubuntu en installant le package p11-kit-modules
, puis en remplaçant le module NSS Built-in Trust roots par p11-kit-trust.so
, en créant un lien symbolique, par exemple de /usr/lib/firefox/libnssckbi.so
à /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
.
Ensuite, vous obtiendrez les racines de confiance configurées du système, pas celles qui sont codées en dur. Notez qu'Ubuntu fournit plusieurs différentes copies de cette bibliothèque libnssckbi.so avec les racines de confiance codées en dur, et vous devez toutes les remplacer!
cf. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285
Sérieusement stupide réponse à ajouter ici, mais j'avais passé 2 heures à faire des allers-retours avec certutils sous Linux ... J'étais sûre que tout était correct:
hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
anyproxy CT,,
rootCA CT,,
myasos CT,,
Mais encore, en chrome rien ne fonctionnait. J'ai tout essayé, finalement ...
Restarting Chrome
Était la clé de mon succès après avoir suivi: le conseil de Steven Monday