OpenSSL angemessenen Standard für Vertrauenswürdige CA-Zertifikate?
Gibt es eine Möglichkeit zum einrichten eines OpenSSL-Kontext (SSL_CTX
) mit einem vernünftigen Satz von vertrauenswürdigen CA-Zertifikate ohne verteilen Sie selbst? Ich will nicht die Verantwortung, halten Sie up to date. IMO jedem modernen Betriebssystem soll "hol mir die vertrauenswürdigen CA-CERT" als Dienst, aber ich weiß nicht, ob das tatsächlich der Fall ist.
Ich bin nicht dagegen, das schreiben drei mal (einmal für Windows, einmal für Mac OS X, und einmal für Linux), aber ich würde es vorziehen, Kappe es damals. Insbesondere möchte ich lieber nicht versuchen, code zu schreiben, neugierigen Augen geschützt herum auf der Suche nach was Browser sind installiert und versucht zu extrahieren, Ihre vertrauenswürdigen Zertifikate. (Anscheinend ist es einfach, diese sehr schief.)
Die Antwort für die aktuellen Versionen von Linux scheint zu rufen: SSL_CTX_load_verify_locations
mit /etc/ssl/certs/ca-certificates.crt
(wenn diese Datei vorhanden ist).
Gibt es einfache Antworten für Windows und Mac OS X?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie
curl
's script wandelt die Liste von Mozilla (von Curl-Betreuer die Antwort). Nach seinen code, so scheint es, zu überprüfen, ob das Zertifikat vertrauenswürdig ist oder nicht, bevor es.Hier ist, was ich am Ende machen:
Unter Windows: Holen Sie sich die Zertifikate aus dem Windows -
"ROOT"
Zertifikatspeicher mitCertOpenSystemStore
loop über Sie mitCertEnumCertificatesInStore
, greifen die X. 509-codierte raw-Zertifikat von derpbCertEncoded
Bereich derCERT_CONTEXT
erstellen eines OpenSSL -X509
Struktur mitd2i_X509
, und fügen Sie das OpenSSL-Zertifikat-store ViaX509_STORE_add_cert
. Die Windows Funktionen sind alle vorhanden voncrypt32.dll
.Unter Mac OS X: die Zertifikate erhalten von der
"/System/Library/Keychains/SystemRootCertificates.keychain"
Schlüsselanhänger mitSecKeychainOpen
erstellen Sie einen iterator für die Zertifikate in den Schlüsselbund mitSecKeychainSearchCreateFromAttributes
, Durchlaufen mitSecKeychainSearchCopyNext
, die roh-X509-Zertifikat mitSecItemExport
erstellen eines OpenSSL-Zertifikat mitd2i_X509
, und fügen Sie es dem OpenSSL-store mitX509_STORE_add_cert
. Die Mac-Funktionen sind aus/Systems/Library/Frameworks/Security.framework/Security
.Ein besserer Ansatz könnte sein, erstellen eines OpenSSL -
X509_STORE
mit einem callback verwendet OS-Funktionen zu überprüfen, eine einzelne root-cert nicht kopieren, sondern Sie alle über, aber ich habe nicht versucht, die.Auf OS X, können Sie Informationen über die Zertifikate denen der Benutzer vertraut, für den Nutzer Schlüsselbund. Hier ist ein link mit einigen guten Informationen zu sammeln, die info mit Kakao:
Erhalten Sie die Zertifikate in Ihrem Schlüsselbund
Wenn Kakao ist nicht ok-Abhängigkeit für Ihre Bedürfnisse, und Sie wollen alles tun, was direkt von der Befehl Linie, können Sie mit der
certtool
utility - sieheman certtool
und andere online-Dokumentation um mehr darüber zu erfahren. Um eine Liste aller Zertifikate, die in der Benutzer-login-keychain, die Sie machen könnten:Oder zum abrufen einer Liste der integrierten trusted-system-Wurzeln:
und vielleicht
Ich bin sicher, es gibt andere Wege, um an diese Informationen mit Hilfe der system-Schnittstellen als auch.
Auf der Linux-Seite, ja,
/etc/ssl/certs/ca-certificates.crt
ist der richtige Weg zu gehen. Die Datei gibt es auf Debian-Derivate (inc. Ubuntu-Varianten), wenn dieca-certificates
- Paket installiert ist, und ich bin mir nicht sicher wie man es richtig auf redhat-basierten Systemen.certtool
verhält sich für Zertifikate, die ausdrücklich gekennzeichnet als "nie Vertrauen", obwohl?man security
für eine gute Möglichkeit, wenn Sie wirklich in die Befehlszeilen-tools für diese.files/certsync.m
), die auch exportiert die vertrauenswürdigen Wurzeln in eine Datei und führt die Aufmerksamkeit auf die trust-flags (durch die nicht exportiert werden).