2012-06-15 16:14:17 +0000 2012-06-15 16:14:17 +0000
186
186

Wie fügt man eine Certificate Authority (CA) zu Ubuntu hinzu?

Meine Arbeit hat beschlossen, eine eigene certificate authority (CA) herauszugeben, um verschiedene Aspekte unserer Arbeit sicher zu handhaben, ohne für Zertifikate zu bezahlen.

  • E-Mails kryptographisch signieren
  • E-Mail-Inhalte verschlüsseln
  • Zugang zu Dingen wie dem Unternehmen IRC Client-Zertifikat-basiert machen
  • Schlüssel ehemaliger Mitarbeiter automatisch widerrufen

Sie haben mir eine Datei .pem geschickt, und ich bin mir nicht sicher, wie ich sie zu meiner Ubuntu-Installation hinzufügen soll. Die gesendeten Anweisungen waren: “Ein Doppelklick darauf auf einem Mac sollte sie installieren.” 

Wie gehe ich vor? Muss ich etwas mit OpenSSL tun, um eine Datei .key, .csr oder .crt zu erstellen?

Antworten (8)

253
253
253
2014-02-19 19:13:09 +0000

Installieren einer CA

Kopieren Sie Ihr Zertifikat im PEM-Format (das Format, das ----BEGIN CERTIFICATE---- enthält) in /usr/local/share/ca-certificates und benennen Sie es mit der Dateierweiterung .crt.

Führen Sie dann sudo update-ca-certificates aus.

Einschränkungen: Diese Installation betrifft nur Produkte, die diesen Zertifikatsspeicher verwenden. Einige Produkte verwenden möglicherweise andere Zertifikatspeicher; wenn Sie diese Produkte verwenden, müssen Sie dieses CA-Zertifikat auch zu diesen anderen Zertifikatspeichern hinzufügen. Firefox-Anweisungen , Chrome-Anweisungen , Java-Anweisungen )

Testen der CA

Sie können überprüfen, ob dies funktioniert hat, indem Sie in /etc/ssl/certs/ca-certificates.crt nach dem Zertifikat suchen, das Sie gerade hinzugefügt haben (dies ist nur eine lange Liste aller Ihrer vertrauenswürdigen CA’s, die miteinander verkettet sind).

Sie können auch den _Client von OpenSSL verwenden, indem Sie versuchen, eine Verbindung zu einem Server herzustellen, von dem Sie wissen, dass er ein von der CA, die Sie gerade installiert haben, signiertes Zertifikat verwendet.

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

Das erste, wonach Sie suchen müssen, ist die Zertifikatskette in der Nähe des oberen Randes der Ausgabe. Diese sollte die CA als Aussteller (neben i:) anzeigen. Dies zeigt Ihnen an, dass der Server ein von der CA, die Sie installieren, signiertes Zertifikat vorlegt.

Als Zweites suchen Sie nach der verify return code am Ende, die auf 0 (ok) gesetzt werden soll.

69
69
69
2012-06-15 18:07:40 +0000

man update-ca-c-certificates :

update-ca-certificates is a program that updates the directory /etc/ssl/certs to hold SSL
certificates and generates ca-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. Certificates must have a .crt
extension in order to be included by update-ca-certificates.

Furthermore all certificates with a .crt extension found below /usr/local/share/ca-
certificates are also included as implicitly trusted.

Aus den obigen Ausführungen würde ich schließen, dass die bevorzugte Methode, lokale Zertifikatsdateien in den vertrauenswürdigen Speicher zu bekommen, darin besteht, sie in /usr/local/share/ca-certificates abzulegen und dann update-ca-certificates auszuführen. Sie brauchen /etc/ssl/certs nicht direkt zu berühren.

15
15
15
2013-10-10 18:46:49 +0000

Die anderen Antworten zu update-ca-certificates sind korrekt für Anwendungen, die aus dem Systemzertifikatspeicher lesen. Für Chrome und Firefox, und wahrscheinlich auch für einige andere, muss das Zertifikat in die nssdb, das Backend für die Mozilla NSS-Bibliothek, gelegt werden.

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

Um beispielsweise einem Root-CA-Zertifikat für die Ausstellung von SSL-Serverzertifikaten zu vertrauen, verwenden Sie

certutil -d sql:$HOME/. pki/nssdb -A -t “C,”,“ -n <Zertifikatsnickname> -i <Zertifikatsdateiname>

wobei <certificate nickname> willkürlich ist und <certificate filename> Ihre .pem- oder .crt-Datei ist.

Weitere hilfreiche Hinweise:

- Allgemeine Beschreibung: https://wiki.archlinux.org/index.php/Network_Security_Services

15
15
15
2014-04-30 13:39:09 +0000

Ich hatte dasselbe Problem, und ich musste die Datei .pem nach /usr/local/share/ca-certificates kopieren und in .crt umbenennen. Die Datei .cer kann leicht in .pem konvertiert werden, z.B. mit openssl, wenn Sie die Datei .pem nicht haben.

Nach dem Kopieren der Datei müssen Sie sudo update-ca-certificates ausführen.

11
11
11
2015-09-02 06:19:09 +0000

Für neuere Builds, die auf Debian basieren, müssen Sie möglicherweise Folgendes ausführen:

sudo dpkg-reconfigure ca-certificates

HINWEIS: sudo dpkg-reconfigure ca-certificates calls update-ca-certificates internally

Sie müssen natürlich immer noch das Zertifikat (.crt-Datei) nach /usr/share/ca-certificates kopieren, bevor Sie irgendetwas davon machen :)

6
6
6
2018-04-10 01:00:50 +0000

Aufbauend auf der Antwort von dwmw2 können Sie Anwendungen, die NSS für ihre Zertifikatsverwaltung verwenden, tatsächlich mitteilen, dass sie den System-Trust-Store verwenden.

libnss3 wird standardmäßig mit einem schreibgeschützten Satz von Root-CA-Zertifikaten (libnssckbi.so) ausgeliefert, so dass Sie diese in den meisten Fällen selbst manuell zum lokalen Benutzer-Trust-Store in $HOME/.pki/nssdb hinzufügen müssen. p11-kit bietet einen Drop-in-Ersatz für libnssckbi.so, der als Adapter für die in /etc/ssl/certs installierten systemweiten Stammzertifikate dient.

Edit:

Es scheint mehr Versionen von libnssckbi.so als nur in libnss3 zu geben. Im folgenden finden Sie ein Skript, um sie alle zu finden, zu sichern und durch Links zu p11-kit zu ersetzen:

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

Originalanleitung:

Installieren Sie dazu p11-kit und libnss3 (falls sie nicht bereits auf dem Rist installiert sind):

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

Sichern Sie dann die von libnssckbi.so bereitgestellte vorhandene libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

Erstellen Sie schließlich den symbolischen Link:

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

Um zu bestätigen, dass es funktioniert hat, können Sie ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so ausführen und es sollte den Link anzeigen:

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

Wenn Sie nun mit update-ca-certificates ein Zertifikat zum CA-Speicher hinzufügen, stehen diese Zertifikate nun Anwendungen zur Verfügung, die NSS (libnss3) verwenden, wie z.B. Chrome.

3
3
3
2016-12-12 12:36:34 +0000

Wie bereits erwähnt, haben verschiedene Anwendungen, die NSS verwenden, ihren eigenen Zertifikatspeicher. Wie die Dinge unter Ubuntu stehen, müssen Sie manuell certutil verwenden, um Ihre CAs für jede Anwendung, für jeden Benutzer hinzuzufügen.

In anderen Distributionen wie Fedora, diese Art von Dingen Nur Works™ und Sie sollten einen Fehler gegen alle Anwendungen melden, die nicht automatisch den CAs vertrauen, die Sie mit update-ca-trust installieren.

Sie können dies auch in Ubuntu beheben, indem Sie das Paket p11-kit-modules installieren und dann das NSS eingebaute Vertrauensstamm-Modul durch p11-kit-trust.so ersetzen, indem Sie einen symbolischen Link z.B. von /usr/lib/firefox/libnssckbi.so nach /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so erstellen

Dann werden Sie die konfigurierten Vertrauensstämme des Systems erhalten, nicht einige fest programmierte. Beachten Sie, dass Ubuntu mehrere verschiedene Kopien dieser libnssckbi.so-Bibliothek mit den hartcodierten Vertrauensstämmen ausliefert, und Sie müssen sie alle ersetzen!

vgl. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285

1
1
1
2018-01-02 12:58:09 +0000

Ernsthaft dumme Antwort, die hier hinzuzufügen, aber ich hatte 2 Stunden damit verbracht, mit certutils in linux hin und her zu gehen… Ich war sicher, dass alles korrekt war:

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,,

Aber trotzdem funktionierte in Chrom nichts. Ich versuchte alles, und am Ende…

Restarting Chrome

war der Schlüssel zu meinem Erfolg nach dem Folgen: Steven Monday ’s advice