Frage Wie fügen Sie Ubuntu eine Zertifizierungsstelle hinzu?


Meine Arbeit hat beschlossen, ihre eigenen herauszugeben Zertifizierungsstelle (CA) um verschiedene Aspekte unserer Arbeit sicher zu behandeln, ohne für Zertifikate zu bezahlen.

  • E-Mails kryptografisch signieren
  • E-Mail Inhalte verschlüsseln
  • Machen Sie Zugang zu Dingen wie der Firma IRC Client-Zertifikat basiert.
  • Entmutigen Sie die Schlüssel früherer Mitarbeiter automatisch

Sie haben mir einen geschickt .pem Datei, und ich bin mir nicht sicher, wie ich es zu meiner Ubuntu-Installation hinzufügen soll. Die Anweisungen waren: "Doppelklick auf einen Mac sollte es installieren."

Wie gehe ich vor? Muss ich etwas damit machen? OpenSSL ein erstellen .key, .csr, oder .crt Datei?


133
2018-06-15 16:14


Ursprung




Antworten:


Installieren einer Zertifizierungsstelle

Kopieren Sie Ihr Zertifikat im PEM-Format (das Format, das ----BEGIN CERTIFICATE---- in es) hinein /usr/local/share/ca-certificates und nenne es mit a .crt Dateierweiterung.

Dann renne sudo update-ca-certificates.

Vorbehalte: Diese Installation betrifft nur Produkte, die diesen Zertifikatspeicher verwenden. Einige Produkte können andere Zertifikatspeicher verwenden. Wenn Sie diese Produkte verwenden, müssen Sie dieses CA-Zertifikat auch diesen anderen Zertifikatspeichern hinzufügen. (Firefox Anleitung, Chrome Anleitung, Java Anweisungen)

Testen der Zertifizierungsstelle

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

Sie können den s_client von OpenSSL auch verwenden, indem Sie versuchen, eine Verbindung zu einem Server herzustellen, von dem Sie wissen, dass er ein Zertifikat verwendet, das von der gerade installierten Zertifizierungsstelle signiert wurde.

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

Die erste Sache, nach der gesucht wird, ist die Zertifikatskette nahe dem oberen Ende der Ausgabe. Dies sollte die CA als Aussteller anzeigen (neben i:). Dadurch erfahren Sie, dass der Server ein Zertifikat vorlegt, das von der zu installierenden Zertifizierungsstelle signiert wurde.

Zweitens, suchen Sie nach dem verify return code am Ende auf eingestellt werden 0 (ok).


178
2018-02-19 19:13



dieser funktioniert tatsächlich - Sabareesh Kkanan
Danke, dass Firefox / Chrome den Standard-Cert-Store nicht verwendet. - shokora
Beachten Sie, dass Update-CA-Zertifikate (wahrscheinlich von Design) sehr knifflig sein können. mycert.pem.crt hat nicht funktioniert, aber mycert.crt hat es getan. Ich denke auch, dass es / usr / local / share / ca-certificates sein muss, nicht / usr / share / ca-certificates (trotz der Kommentare in der /etc/ca-certificates.conf). - labyrinth
Danke für crt Englisch: www.mjfriendship.de/en/index.php?op...27&Itemid=47 Nebenbei bemerkt, das war das Geheimnis um diese Arbeit für mich zu bekommen, ich bekam ein Zertifikat mit einem cert Erweiterung und war verwirrt, warum nichts funktionierte. - Ransom Briggs
Eine Einschränkung: s_client sendet SNI nicht standardmäßig und der Server benötigt möglicherweise SNI, insbesondere wenn er virtuelle Hosts / Sites mit unterschiedlichen Zertifikaten unterstützt; für diesen Fall hinzufügen -servername foo.whatever.com. Oder wenn es ein ist Netz Serverbenutzung (moderne Versionen von) curl oder wget die SNI automatisch machen. - dave_thompson_085


Man Update-CA-Zertifikate:

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.

Aus dem Obigen würde ich folgern, dass der bevorzugte Weg, um lokale Zertifikatsdateien in den vertrauenswürdigen Speicher zu bekommen, darin besteht, sie hinein zu bringen /usr/local/share/ca-certificatesund dann rennen update-ca-certificates. Sie müssen nicht berühren /etc/ssl/certs direkt.


56
2018-06-15 18:07



Die Benennung der Zertifikate mit den Erweiterungen .crt schien ebenfalls erforderlich zu sein. - phyzome
Danke für den Hinweis @phyzome - hätte mein cert sonst nicht hinzufügen können. - Seiyria


Ich hatte dasselbe Problem, und ich musste das kopieren .pem Datei an /usr/local/share/ca-certificatesumbenennen als .crt. Das .cer Datei kann leicht in konvertiert werden .pemmit openssl zum Beispiel, wenn du nicht die .pem.

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


15
2018-04-30 13:39



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


Die anderen Antworten bezüglich update-ca-certificates sind korrekt für Anwendungen, die aus dem Systemzertifikatsspeicher lesen. Bei Chrome und Firefox und möglicherweise einigen anderen muss das Zertifikat in das nssdb, das Backend für die Mozilla NSS-Bibliothek, geschrieben werden.

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

Um beispielsweise einem Stammzertifizierungsstellenzertifikat zum Ausstellen von SSL-Serverzertifikaten zu vertrauen, verwenden Sie

certutil -d sql: $ HOME / .pki / nssdb -A -t "C ,," -n <Zertifikat-Kurzname> -i <Zertifikatsdateiname>

Woher <certificate nickname> ist beliebig, und <certificate filename> ist Ihre .pem oder .crt Datei.

Weitere hilfreiche Hinweise:


12
2017-10-10 18:46



Vielen Dank. Es funktioniert auf Ubuntu 16.04 für Chrome 53.0.2785.143, aber Firefox 49 scheint separate Speicher db zu haben und muss hinzugefügt werden von: preferences # advanced [View Certificates] -> [Authorities] -> [Import] Mehr über firefox cert store. askubuntu.com/a/248326/535154 - mauron85
Übrigens, wenn Sie cert installieren möchten Vor erste Ausführung von Chrome (d. h. während .pki / dir noch fehlt), müssen Sie zuerst das nssdb erstellen: mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password - akavel
Es gibt eine Möglichkeit, Chrome und Firefox aus dem Systemzertifikatsspeicher auszulesen. Siehe meine Antwort: superuser.com/a/1312419/506107 - wheeler


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 ruft intern update-ca-certificates auf

Sie müssen natürlich noch das Zertifikat (.crt-Datei) nach / usr / share / ca-certifics kopieren, bevor Sie das tun :)


8
2017-09-02 06:19





Aufbauend auf dwmw2's Antwortenkönnen Sie Anwendungen, die NSS für die Zertifikatsverwaltung verwenden, mitteilen, den System Trust Store zu verwenden.

libnss3 wird standardmäßig mit einem schreibgeschützten Satz von Stamm-CA-Zertifikaten ausgeliefert (libnssckbi.so), also müssen Sie die meiste Zeit manuell zum lokalen Benutzer - Vertrauensspeicher hinzufügen, der sich in $HOME/.pki/nssdb. p11-kit bietet einen Drop-In Ersatz für libnssckbi.so Dies dient als Adapter für die systemweiten Stammzertifikate, die in installiert sind /etc/ssl/certs.

Bearbeiten:

Es scheint mehr Versionen zu geben libnssckbi.so da draußen als nur in libnss3. Im Folgenden finden Sie ein Skript, um alle zu finden, zu sichern und durch Links zu ersetzen 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

Original Anweisungen:

Installieren Sie dazu p11-kit und libnss3 (wenn sie nicht bereits installiert sind):

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

Dann sichern Sie das vorhandene libnssckbi.so zur Verfügung gestellt von libnss3:

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

Schließlich erstellen Sie 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, können Sie ausführen ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so 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 jetzt ein Zertifikat zum CA-Speicher hinzufügen, verwenden Sie update-ca-certificatesDiese Zertifikate sind jetzt für Anwendungen verfügbar, die NSS verwenden (libnss3) wie Chrome.


1
2018-04-10 01:00





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

In anderen Distributionen wie Fedora funktioniert diese Art von Funktion einfach und Sie sollten einen Fehler gegen jede Anwendung einreichen, die den installierten CAs nicht automatisch vertraut update-ca-trust.

Sie können dies auch in Ubuntu beheben, indem Sie das installieren p11-kit-modules Paket und dann ersetzen die NSS eingebaute Vertrauenswurzeln Modul mit p11-kit-trust.soB. indem Sie eine symbolische Verbindung herstellen /usr/lib/firefox/libnssckbi.so zu /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Dann Sie werden Erhalten Sie die konfigurierten Vertrauenswurzeln des Systems, nicht einige fest codierte. Beachten Sie, dass Ubuntu mehrere Schiffe liefert anders Kopien dieser libnssckbi.so-Bibliothek mit den hartcodierten Vertrauenswurzeln, und Sie müssen alle ersetzen!

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


1
2017-12-12 12:36



Als ich es tat sudo find / -type f -name "libnssckbi.so"Es hat gefunden libnssckbi.so an drei Stellen: /usr/lib/thunderbird/, /usr/lib/firefox/, und /usr/lib/x86_64-linux-gnu/nss/. Du sagst also, dass ich das verlinken sollte libnssckbi.so in allen drei dieser Ordner zu p11-kit-trust.so? - wheeler
Okay, ich bestätige gerade diese Verknüpfung /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so Lief wie am Schnürchen. Ich konnte ein Zertifikat hinzufügen /usr/local/share/ca-certificates, Lauf sudo update-ca-certificatesund PRESTO hat Chrome damit begonnen, die selbstsignierten Zertifikate zu akzeptieren. - wheeler


Ernsthaft dumme Antwort, um hier hinzuzufügen, aber ich hatte 2 Stunden mit certutils in Linux hin und her gehen ... Ich war mir sicher, dass alles in Ordnung 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 immer noch, in Chrom funktionierte nichts. Ich habe alles versucht, am Ende ....

Restarting Chrome 

War der Schlüssel zu meinem Erfolg nach dem folgen: Steven Montag's Rat


0
2018-01-02 12:58