
Open-Source-Tool, das Ihnen hilft, eine gültige SSL-Zertifikatskette zu erstellen.
Beschreibung • Verwendung • Parameter • Funktionsweise • Anforderungen • Sonstiges • Lizenz
Ist ein Open-Source-Tool, das Ihnen hilft, eine gültige SSL-Zertifikatskette zu erstellen. Es kann Ihnen auch helfen, die unvollständige Kette zu reparieren und alle fehlenden CA-Zertifikate herunterzuladen. Sie können auch alle Zertifikate von einem entfernten Server herunterladen und Ihre Zertifikatskette richtigstellen.
Es ist einfach:
# Dieses Repository klonen
git clone https://github.com/trimstray/mkchain
# In das Repository wechseln
cd mkchain
# Installieren
./setup.sh install
# Die Anwendung ausführen
mkchain -i /data/certs -o /data/chain.crt
- Symlink zu
bin/mkchainbefindet sich in/usr/local/bin- Die Manpage befindet sich in
/usr/local/man/man8
Bietet die folgenden Optionen:
Usage:
mkchain <option|long-option>
Examples:
mkchain --in Root.crt --in Intermediate1.crt --in Server.crt --out bundle_chain_certs.crt
mkchain --in /tmp/certs --out bundle_chain_certs.crt --with-root
mkchain -i Server.crt -o bundle_chain_certs.crt
mkchain -i https://incomplete-chain.badssl.com/ --with-root
Options:
--help show this message
--debug displays information on the screen (debug mode)
-i, --in add certificates to merge (file, multiple files, directory with ssl certificates
or remote domain)
-o, --out saves the result (chain) to a file
--with-root add root certificate to certificates chain
-o|--out- Ohne diesen Parameter speichertmkchaindie Ausgabekette im Verzeichnismkchain/chains/.
Bevor Sie es lesen, lesen Sie bitte den Artikel über SSL Certificate Chain.
Beginnen wir mit der ssllabs-Zertifikatskette. Diese werden zusammen mit mkchain ausgeliefert und befinden sich im Verzeichnis example/ssllabs.com, das zusätzlich das Verzeichnis all (enthält alle für den Aufbau der Kette benötigten Zertifikate) und das Verzeichnis server_certificate (enthält nur das Serverzertifikat) enthält.
Die korrekte Kette für die Domain ssllabs.com (Ergebnis des openssl-Befehls):
Certificate chain
0 s:/C=US/ST=California/L=Redwood City/O=Qualys, Inc./CN=ssllabs.com
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
1 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
2 s:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2009 Entrust, Inc. - for authorized use only/CN=Entrust Root Certification Authority - G2
i:/C=US/O=Entrust, Inc./OU=www.entrust.net/CPS is incorporated by reference/OU=(c) 2006 Entrust, Inc./CN=Entrust Root Certification Authority
Der obige Code zeigt eine vollständige Kette, bestehend aus:
Identitätszertifikat (Serverzertifikat)
ausgestellt für ssllabs.com von Entrust Certification Authority - L1K
Zwischenzertifikat
ausgestellt für Entrust Certification Authority - L1K von Entrust Root Certification Authority - G2
Zwischenzertifikat
ausgestellt für Entrust Root Certification Authority - G2 von Entrust Root Certification Authority
Wurzelzertifikat (selbstsigniertes Zertifikat)
ausgestellt für Entrust Root Certification Authority von Entrust Root Certification Authority
In diesem Szenario verketten wir alle gelieferten Zertifikate. Beispiel für die Ausführung des Tools:
In diesem Szenario verwenden wir nur das Serverzertifikat und nutzen es, um die restlichen erforderlichen Zertifikate abzurufen. Dann kombinieren wir, wie oben, alle bereitgestellten Zertifikate. Beispiel für die Ausführung des Tools:
Um eine gültige Kette zu erstellen, müssen Sie dem Tool alle erforderlichen Zertifikate zur Verfügung stellen (wenn Sie ein Verzeichnis für den Parameter -i|--in festlegen). Dies sind:
Dies ist sehr wichtig, da Sie ohne diese den Anfang und das Ende der Kette nicht bestimmen können.
Wenn Sie nur eine Zertifikatsdatei als
-i|--in-Wert angeben, lädtmkchainautomatisch alle erforderlichen Zertifikate herunter.
Wenn Sie jedoch in die erzeugte Kette nach der Generierung mit mkchain schauen, werden Sie dort kein Wurzelzertifikat finden.
Warum? Weil selbstsignierte Wurzelzertifikate nicht in die Webserverkonfiguration aufgenommen werden müssen/sollten. Sie dienen keinem Zweck (Clients ignorieren sie immer) und verursachen einen leichten Leistungsverlust (Latenz), da sie die Größe des SSL-Handshakes vergrößern.
Wenn Sie ein Wurzelzertifikat zur Zertifikatskette hinzufügen möchten, rufen Sie das Dienstprogramm mit dem Parameter --with-root auf.
mkchain erlaubt die Verwendung von zwei Zertifizierungspfaden:
Bei der Generierung der Zertifikatskette zeigt mkchain Kommentare mit Informationen zu den Zertifikaten an, einschließlich etwaiger Fehler.
Hier ist eine Liste aller Möglichkeiten:
Die Meldung wird beim Fehlen eines Serverzertifikats angezeigt, das den Anfang der Kette darstellt. Dies ist ein einzigartiger Fall, da in dieser Situation mkchain seine Ausführung beendet und nur diese Information anzeigt. Das Serverzertifikat ist das einzige Zertifikat, das für die korrekte Erstellung einer Kette erforderlich ist. Ohne dieses Zertifikat wird keine korrekte Kette erstellt.
Die umgekehrte Situation hier – Meldung, die angezeigt wird, wenn ein gültiges Serverzertifikat gefunden wird.