Meine Arbeit hat beschlossen, eine eigene Zertifizierungsstelle ( Certificate Authority, CA) auszustellen , um verschiedene Aspekte unserer Arbeit sicher abzuwickeln, ohne für Zertifikate zu bezahlen.
- E-Mails kryptografisch signieren
- E-Mail-Inhalte verschlüsseln
- Greifen Sie beispielsweise auf das firmeneigene IRC- Client-Zertifikat zu.
- Die Schlüssel ehemaliger Mitarbeiter automatisch widerrufen
Sie haben mir eine .pem
Datei geschickt und ich bin nicht sicher, wie ich sie zu meiner Ubuntu-Installation hinzufügen soll. Die gesendeten Anweisungen lauteten: "Ein Doppelklick auf einen Mac sollte ihn installieren."
Wie gehe ich vor? Muss ich etwas mit dem tun OpenSSL eine erstellen .key
, .csr
oder .crt
Datei?
ubuntu
certificate
trusted-root-certificates
Xeoncross
quelle
quelle
Antworten:
CA installieren
Kopieren Sie Ihr Zertifikat in das PEM-Format (das Format,
----BEGIN CERTIFICATE----
in dem es enthalten ist)/usr/local/share/ca-certificates
und benennen Sie es mit einer.crt
Dateierweiterung.Dann lauf
sudo update-ca-certificates
.Vorsichtsmaßnahmen: Diese Installation betrifft nur Produkte, die diesen Zertifikatspeicher verwenden. Einige Produkte verwenden möglicherweise andere Zertifikatspeicher. Wenn Sie diese Produkte verwenden, müssen Sie dieses CA-Zertifikat auch diesen anderen Zertifikatspeichern hinzufügen. ( Firefox-Anweisungen , Chrome-Anweisungen , Java-Anweisungen )
CA testen
Sie können überprüfen, ob dies funktioniert hat, indem Sie nach dem Zertifikat suchen, das Sie gerade hinzugefügt haben
/etc/ssl/certs/ca-certificates.crt
(eine lange Liste aller verknüpften vertrauenswürdigen Zertifizierungsstellen ).Sie können OpenSSLs s_client auch verwenden, indem Sie versuchen, eine Verbindung zu einem Server herzustellen, von dem Sie wissen, dass er ein Zertifikat verwendet, das von der soeben installierten Zertifizierungsstelle signiert wurde.
Als Erstes muss die Zertifikatskette am oberen Rand der Ausgabe gesucht werden. Dies sollte die Zertifizierungsstelle als Aussteller (neben
i:
) anzeigen . Dies zeigt an, dass der Server ein von der zu installierenden Zertifizierungsstelle signiertes Zertifikat vorlegt.Zweitens suchen Sie nach dem
verify return code
Ende, auf das festgelegt werden soll0 (ok)
.quelle
crt
Erweiterungskommentar, der das Geheimnis war, um diese Arbeit für mich zu bekommen. Ich erhielt ein Zertifikat mit einercert
Erweiterung und war verwirrt, warum nichts funktionierte.s_client
SNI wird standardmäßig nicht gesendet, 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 sich um einen Webserver handelt (moderne Versionen von)curl
oderwget
der SNI automatisch macht.man update-ca-Zertifikate :
Aus dem oben Gesagten würde ich schließen, dass der bevorzugte Weg, lokale Zertifikatdateien in den vertrauenswürdigen Speicher zu bekommen, darin besteht, sie dort abzulegen
/usr/local/share/ca-certificates
und dann auszuführenupdate-ca-certificates
. Sie müssen nicht/etc/ssl/certs
direkt berühren .quelle
--fresh
, um es zum Laufen zu bringen. zBupdate-ca-certificates --fresh
Ich hatte das gleiche Problem und musste die
.pem
Datei kopieren/usr/local/share/ca-certificates
und umbenennen als.crt
. Die.cer
Datei kann einfach.pem
mit openssl konvertiert werden , wenn Sie zum Beispiel die nicht haben.pem
.Nach dem Kopieren der Datei müssen Sie ausführen
sudo update-ca-certificates
.quelle
openssl x509 -inform DER -in certificate.cer -out certificate.crt
Die anderen Antworten in Bezug auf
update-ca-certificates
sind für Anwendungen korrekt, die aus dem Systemzertifikatsspeicher lesen. Für Chrome und Firefox und wahrscheinlich auch für einige andere muss das Zertifikat in der nssdb abgelegt werden, dem Backend für die Mozilla NSS-Bibliothek.Von https://code.google.com/p/chromium/wiki/LinuxCertManagement :
Wo
<certificate nickname>
ist beliebig und<certificate filename>
ist Ihre PEM- oder CRT-Datei.Andere hilfreiche Referenzen:
certutil
Manpage, die die oben verwendeten Parameter beschreibt: https://developer.mozilla.org/en-US/docs/NSS_reference/NSS_tools_:_certutilquelle
mkdir -p $HOME/.pki/nssdb && chmod -R 0700 $HOME/.pki && certutil -d sql:$HOME/.pki/nssdb -N --empty-password
Für neuere Builds, die auf Debian basieren, müssen Sie möglicherweise Folgendes ausführen:
HINWEIS: sudo dpkg-reconfigure ca-certificates ruft update-ca-certificates intern auf
Natürlich müssen Sie das Zertifikat (.crt-Datei) noch nach / usr / share / ca-certificates kopieren, bevor Sie dies tun können :)
quelle
Aufbauend auf der Antwort von dwmw2 können Sie Anwendungen, die NSS für die Zertifikatverwaltung verwenden, anweisen , den System- Truststore zu verwenden.
libnss3
Standardmäßig wird ein schreibgeschützter Satz von Stammzertifizierungsstellenzertifikaten (libnssckbi.so
) mitgeliefert. Daher müssen Sie diese meistens manuell zum lokalen Benutzervertrauensspeicher in hinzufügen$HOME/.pki/nssdb
.p11-kit
bietet einen Drop-In-Ersatz anlibnssckbi.so
, der als Adapter für die in installierten systemweiten Stammzertifikate fungiert/etc/ssl/certs
.Bearbeiten:
Es scheint mehr Versionen von da
libnssckbi.so
draußen zu geben als nur inlibnss3
. Das Folgende ist ein Skript, um sie alle zu finden, zu sichern und durch Links zu ersetzenp11-kit
:Originalanleitung:
Installieren Sie dazu
p11-kit
undlibnss3
(falls noch nicht geschehen):Dann sichern Sie die vorhandenen
libnssckbi.so
vonlibnss3
:Erstellen Sie zum Schluss den symbolischen Link:
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 zeigen:Wenn Sie jetzt ein Zertifikat zum CA-Speicher hinzufügen
update-ca-certificates
, stehen diese Zertifikate jetzt Anwendungen zur Verfügung, die NSS (libnss3
) verwenden, z. B. Chrome.quelle
Wie bereits erwähnt, haben verschiedene Anwendungen, die NSS verwenden, einen eigenen Zertifikatspeicher. Unter Ubuntu müssen Sie
certutil
Ihre Zertifizierungsstellen manuell für jede Anwendung und jeden Benutzer hinzufügen.In anderen Distributionen wie Fedora funktioniert so etwas wie Just Works ™ und Sie sollten einen Fehler gegen alle Anwendungen melden, die den CAs, mit denen Sie installieren, nicht automatisch vertrauen
update-ca-trust
.Sie können dies auch in Ubuntu beheben, indem Sie das
p11-kit-modules
Paket installieren und dann das in NSS integrierte Trust Roots- Modulp11-kit-trust.so
durch ersetzen , indem Sie beispielsweise eine symbolische Verknüpfung von/usr/lib/firefox/libnssckbi.so
nach erstellen/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
Dazu wird das System konfigurierte Vertrauen Wurzeln bekommt, nicht einige hartcodierte diejenigen. Beachten Sie, dass Ubuntu mehrere verschiedene Kopien dieser libnssckbi.so-Bibliothek mit den fest codierten Vertrauensstämmen liefert und Sie alle ersetzen müssen!
vgl. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285
quelle
sudo find / -type f -name "libnssckbi.so"
, fand eslibnssckbi.so
an drei Stellen:/usr/lib/thunderbird/
,/usr/lib/firefox/
, und/usr/lib/x86_64-linux-gnu/nss/
. Sie sagen also, dass ich dielibnssckbi.so
in allen drei Ordnern verknüpfen sollp11-kit-trust.so
?/usr/lib/x86_64-linux-gnu/nss/libnssckbi.so
->/usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
wie ein Charm funktioniert hat. Ich konnte ein Zertifikat hinzufügen/usr/local/share/ca-certificates
, ausführensudo update-ca-certificates
und PRESTO, Chrome begann, die selbstsignierten Zertifikate zu akzeptieren.Ernsthaft dumme Antwort hier hinzuzufügen, aber ich hatte 2 Stunden damit verbracht, mit Certutils unter Linux hin und her zu gehen ... Ich war mir sicher, dass alles korrekt war:
Trotzdem funktionierte in Chrom nichts. Ich habe alles versucht, am Ende ....
Restarting Chrome
War der Schlüssel zu meinem Erfolg, nachdem ich folgte: Steven Montags Rat
quelle