web-dev-qa-db-fra.com

Comment ajouter une autorité de certification à Ubuntu?

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.

  • Signer de manière cryptographique des emails
  • Crypter le contenu des emails
  • Créez un accès à des éléments tels que la société IRC basé sur un certificat client.
  • Révoquer automatiquement les clés des anciens employés

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?

153
Xeoncross

Installer une autorité de certification

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 )

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 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).

210
Mark E. Haase

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.

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.

61
Steven Monday

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.

15
greuze

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>

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

Autres références utiles:

13
Johann

Pour 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 :)

10
missmah

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.

3
wheeler

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

1
dwmw2

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

0
Jamie Hutber