Question Comment ajoutez-vous une autorité de certification (CA) à Ubuntu?


Mon travail a décidé d'émettre leur propre autorité de certification (CA) pour gérer différents aspects de notre travail en toute sécurité sans payer pour les certificats.

  • Signer cryptographiquement les emails
  • Crypter le contenu de l'e-mail
  • Accéder à des choses comme l'entreprise IRC certificat client basé.
  • Révoquer automatiquement les clés des anciens employés

Ils m'ont envoyé un .pem fichier, et je ne sais pas comment l'ajouter à mon installation Ubuntu. Les instructions envoyées étaient: "Double-cliquer dessus sur un Mac devrait l’installer."

Comment procéder? Dois-je faire quelque chose avec OpenSSL créer un .key, .csr, ou .crt fichier?


133
2018-06-15 16:14


origine




Réponses:


Installation d'une autorité de certification

Copiez votre certificat au format PEM (le format qui a ----BEGIN CERTIFICATE---- dedans) en /usr/local/share/ca-certificates et nommez-le avec un .crt extension de fichier.

Puis courir sudo update-ca-certificates.

Mises en garde: Cette installation concerne uniquement les produits utilisant ce magasin de certificats. Certains produits peuvent utiliser d'autres magasins de certificats; Si vous utilisez ces produits, vous devrez également ajouter ce certificat CA aux autres magasins de certificats. (Instructions Firefox, Instructions Chrome, Instructions Java)

Tester le CA

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 n'est qu'une longue liste de toutes les autorités de certification de confiance concaténées ensemble).

Vous pouvez également utiliser le 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 = admin@whatever.com
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/emailAddress=admin@whatever.com

... 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 indiquer que l’autorité de certification est l’é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, cherchez le verify return code à la fin d'être mis à 0 (ok).


178
2018-02-19 19:13



celui-ci fonctionne réellement - Sabareesh Kkanan
Merci d'avoir noté que firefox / chrome n'utilise pas le magasin de certificats par défaut. - shokora
Notez que update-ca-certificates peut être très compliqué (probablement par conception). mycert.pem.crt n'a pas fonctionné, mais mycert.crt l'a fait. Je pense aussi que ce doit être / usr / local / share / ca-certificates, pas / usr / share / ca-certificates (malgré ce que les commentaires ont dit dans le fichier /etc/ca-certificates.conf). - labyrinth
Merci pour le crt commentaire d'extension, c'était le secret pour obtenir ce travail pour moi, on m'a donné un cert avec un cert extension et était confus quant à pourquoi rien ne fonctionnait. - Ransom Briggs
Une mise en garde: s_client n'envoie pas de SNI par défaut et le serveur peut avoir besoin de SNI surtout s'il prend en charge des hôtes / sites virtuels avec des certificats différents; pour ce cas ajouter -servername foo.whatever.com. Ou si c'est un web utilisation du serveur (versions modernes de) curl ou wget qui font SNI automatiquement. - dave_thompson_085


man update-ca-certificates:

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.

À partir de ce qui précède, je déduis que la méthode préférée pour obtenir des fichiers de certificats locaux dans le magasin de confiance est de les /usr/local/share/ca-certificates, puis exécutez update-ca-certificates. Vous n'avez pas besoin de toucher /etc/ssl/certs directement.


56
2018-06-15 18:07



La dénomination des certificats avec des extensions .crt semblait également nécessaire. - phyzome
Merci pour la note @phyzome - n'aurait pas pu ajouter mon cert. - Seiyria


J'ai eu le même problème, et j'ai dû copier le .pem fichier à /usr/local/share/ca-certificates, le renommer comme .crt. le .cer fichier peut facilement être converti en .pem, avec openssl, par exemple, si vous n'avez pas le .pem.

Après avoir copié le fichier, vous devez l'exécuter sudo update-ca-certificates.


15
2018-04-30 13:39



openssl x509 -inform DER -in certificate.cer -out certificate.crt - webwurst


Les autres réponses concernant update-ca-certificates sont corrects pour les applications qui lisent à partir du magasin de certificats du système. Pour Chrome et Firefox, et probablement pour d’autres, le certificat doit être placé dans le nssdb, le backend de la bibliothèque Mozilla NSS.

De https://code.google.com/p/chromium/wiki/LinuxCertManagement:

Par exemple, pour approuver un certificat d'autorité de certification 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>

<certificate nickname> est arbitraire et <certificate filename> est votre fichier .pem ou .crt.

Autres références utiles:


12
2017-10-10 18:46



Merci. Il fonctionne sur Ubuntu 16.04 pour Chrome 53.0.2785.143, mais Firefox 49 semble avoir une base de données distincte et doit être ajoutée à partir de: preferences # advanced [Afficher les certificats] -> [Authorities] -> [Import] Plus sur firefox cert store. askubuntu.com/a/248326/535154 - mauron85
Au fait, si vous voulez installer cert avant première exécution de Chrome (c’est-à-dire que lorsque .pki / dir est toujours manquant), vous devez d’abord créer le nssdb: mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password - akavel
Il existe un moyen de faire en sorte que Chrome et Firefox puissent lire à partir du magasin de certificats du système. Voir ma réponse: superuser.com/a/1312419/506107 - wheeler


Pour les nouvelles versions basées sur Debian, vous devrez peut-être exécuter:

sudo dpkg-reconfigure ca-certificates

REMARQUE: sudo dpkg-reconfigure les ca-certificates appelle les certificats update-ca en interne

Vous aurez bien sûr toujours besoin de copier le certificat (fichier .crt) dans / usr / share / ca-certificates avant de faire tout cela :)


8
2017-09-02 06:19





S'appuyant sur les dwmw2 répondre, vous pouvez réellement indiquer aux applications qui utilisent NSS pour leur gestion de certificats d'utiliser le magasin d'approbations système.

libnss3 par défaut, est livré avec un ensemble de certificats d'autorité de certification racine en lecture seule (libnssckbi.so), la plupart du temps, vous devez les ajouter vous-même manuellement au magasin de confiance des utilisateurs locaux situé dans $HOME/.pki/nssdb. p11-kit offre un remplacement instantané pour libnssckbi.so qui agit comme un adaptateur pour les certificats racine du système installés dans /etc/ssl/certs.

Modifier:

Il semble y avoir plus de versions de libnssckbi.so là-bas que juste en libnss3. Ce qui suit est un script pour tous les trouver, 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 (si elles ne sont pas déjà installées):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Ensuite, sauvegardez l'existant libnssckbi.so 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 il devrait montrer le lien:

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

Maintenant, si vous ajoutez un certificat à la banque CA en utilisant update-ca-certificates, ces certificats seront désormais disponibles pour les applications utilisant NSS (libnss3) comme Chrome.


1
2018-04-10 01:00





Comme indiqué, diverses applications utilisant NSS ont leur propre magasin de certificats. Comme sur Ubuntu, vous devez utiliser manuellement certutil pour ajouter vos autorités de certification pour chaque application, pour chaque utilisateur.

Dans d'autres distributions comme Fedora, ce genre de chose fonctionne et vous devez classer un bogue contre toutes les applications qui ne font pas automatiquement confiance aux autorités de certification que vous installez avec update-ca-trust.

Vous pouvez également résoudre ce problème avec Ubuntu en installant le p11-kit-modules paquet puis remplacer le NSS racines de confiance intégrées module avec p11-kit-trust.so, en faisant un lien symbolique par exemple de /usr/lib/firefox/libnssckbi.so à /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Alors vous volonté obtenir les racines de confiance configurées du système, pas certaines racines codées en dur. Notez que Ubuntu expédie plusieurs différent des 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


1
2017-12-12 12:36



Quand je l'ai fait sudo find / -type f -name "libnssckbi.so", Il a trouvé libnssckbi.so à trois endroits: /usr/lib/thunderbird/, /usr/lib/firefox/, et /usr/lib/x86_64-linux-gnu/nss/. Donc, vous dites que je devrais lier le libnssckbi.so dans les trois de ces dossiers à p11-kit-trust.so? - wheeler
Okay, juste confirmé que la liaison /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so travaillé comme un CHARM. J'ai pu ajouter un certificat dans /usr/local/share/ca-certificates, courir sudo update-ca-certificateset PRESTO, Chrome ont commencé à accepter les certificats auto-signés. - wheeler


Sérieusement la réponse stupide à ajouter ici, mais j'avais passé 2 heures à faire des allers-retours avec des certutils sous Linux ... J'étais sûr 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 toujours, en chrome, rien ne fonctionnait. J'ai tout essayé, finalement ...

Restarting Chrome 

Était la clé de mon succès après avoir suivi: Steven Mondayle conseil


0
2018-01-02 12:58