2014-10-08 3 views
6

ich nicht das Zertifikat von OpenSSL überprüfen könnenopenssl nicht in der Lage debian lokalen Aussteller-Zertifikat zu erhalten

openssl verify cert.pem 

Ruft etwas wie folgt aus:

cert.pem:/C = PL/O = DATA
Fehler 20 bei 0 Tiefe Nachschlag: unable lokale Aussteller-Zertifikat erhalten

Das gleiche cert aus der Maschine auf Centos - prüft co sofort.

Debian: Squeeze/sid

Ist es ein Problem mit dem CA-ROOT? Aktualisierung der Openssl-Hilfe?

Antwort

6

Sie müssen das CA-Zertifikat angeben, um das ausgestellte Zertifikat zu überprüfen, da es offensichtlich nicht in der pem enthalten (obwohl dies möglich wäre):

openssl verify -CAfile your_ca_cert_file cert.pem 

Wenn Sie nicht bekommen, den Fehler auf CentOS Dann gibt es das CA-CERT um es herum und openssl kann es verwenden, um cert.pem erfolgreich zu überprüfen.

+0

Thx für die Wiedergabe. Wenn ich verstanden: - Aus dem Debian done Befehl: openssl überprüfen -CAfile ca-bundle.crt cert.pem wo: - Ca-bundle.crt - ROOT CA des Zertifikatsausstellers (Unizeto/Certum - Polen) - Cert. pem - Zertifikat vom Emittenten erhalten (Unizeto/Certum - Polen) Das Ergebnis - Test auf einem Debian-System ausgeführt: openssl -CAfile bundle.crt ca-cert.pem cert.pem überprüfen: OK openssl cert überprüfen .pem cert.pem:/C = PL/O = Daten ... Fehler 20 bei 0 Tiefe Nachschlagen: lokales Ausstellerzertifikat nicht erhalten Wie das ohne Angabe von ca-bundle.crt tun - mein Zertifikat hat einen Status von OK? – 0chi0

+0

Sie können auch die Umgebungsvariablen SSL_CERT_FILE oder SSL_CERT_DIR festlegen und exportieren ... 'export SSL_CERT_FILE =/pfad/zu/ca_bundle.crt' oder' export SSL_CERT_DIR =/pfad/zu/ca/​​dir' Dann müssen Sie nicht angeben CAfile oder CApath in jedem openssl-Befehl. – lm713

0

Sie müssen Ihre CA vertrauenswürdig auf dem Server machen. Wenn Ihr Zertifikat beispielsweise von goadday stammt, führen Sie die folgenden Befehle aus.

cd /tmp 
sudo wget -O gd_intermediate.crt https://certs.godaddy.com/repository/gd_intermediate.crt 
sudo cp /tmp/gd_intermediate.crt /usr/local/share/ca-certificates/gd_intermediate.crt 
sudo update-ca-certificates 

Nach dem Ausführen dieser Befehle sollte Ihr Zertifikat verifiziert werden.

+1

Sie sollten wget nicht zum Herunterladen von Zertifikaten verwenden. Es gibt bekannte Schwächen mit wget.Eine praktikable Alternative ist Curl. Ich bin zu faul, um einen Link zu bieten. –

6

Im Gegensatz zu Browsern, die fast alles von jedem vertrauen, vertraut OpenSSL standardmäßig nichts.

Es liegt an Ihnen zu bestimmen, was vertraut werden sollte. Sie müssen etwas angeben, wenn Sie OpenSSL verwenden. Es kann ein Zertifikat oder eine Liste von vertrauenswürdigen Zertifikaten sein.

Das Verzeichnis /etc/ssl/certs enthält viele Zertifikate. solches Verzeichnis verwendet, sollte überprüfen erlaubt fast alles:

openssl verify -CApath /etc/ssl/certs cert.pem 

Es wird empfohlen, dass Sie die Anzahl der vertrauenswürdigen Zertifikate zu einem, zwei oder gering wie möglich zu reduzieren.

+0

Noch couldm't meins nicht zur Arbeit (letsencrypt): "root @ messagerie-secours [CHROOT] [10.10.10.19]/etc/ssl/private/LETSENCRYPT # openssl überprüfen -CAfile/etc/ssl/certs/ca-Zertifikate .crt chained_cert.crt chained_cert.crt: CN = messagerie.algerian-radio.dz Fehler 20 bei 0 Tiefensuche: lokales Ausstellerzertifikat kann nicht root @ messagerie-secours [CHROOT] [10.10.10.19]/etc/ssl/privat/LETSENCRYPT # ' – ychaouche