
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.
Diese Meldung erscheint, wenn das erste der beiden Zwischenzertifikate nicht gefunden wird. Diese Information gibt nicht explizit das Fehlen eines zweiten Zwischenzertifikats an, ermöglicht aber andererseits die Feststellung, ob das Zwischenzertifikat, mit dem das Serverzertifikat signiert wurde, existiert. Zusätzlich kann sie angezeigt werden, wenn das zweite Zwischenzertifikat geliefert wurde.
Ähnlich wie oben, betrifft jedoch das zweite Zwischenzertifikat. Es besteht jedoch die Möglichkeit, die Kette korrekt unter Verwendung des zweiten Zertifizierungspfads zu erstellen, z. B. durch Verwendung des ersten Zwischenzertifikats und Ersetzen des zweiten durch das Hauptzertifikat.
Diese Meldung bedeutet, dass eines oder alle erforderlichen Zwischenzertifikate fehlen, und wird beim Fehlen des Wurzelzertifikats angezeigt.
Diese Meldung gibt die Anzahl der gültigen Zwischenzertifikate an.
Das Fehlen des Wurzelzertifikats wird als Warnung behandelt. Bei der Konfiguration von Zertifikaten auf der Serverseite wird natürlich davon abgeraten, ein Wurzelzertifikat anzuhängen. Wenn Sie es jedoch mit mkchain erstellen, behandelt das Tool die Kette als unvollständig und zeigt Informationen über die fehlerhafte Erstellung der Kette an.
Diese Meldung informiert nicht über einen Fehler, sondern über das Fehlen des CN-Feldes, was bei einigen Zertifikaten vorkommen kann (siehe example/google.com). Das Common-Name-Feld identifiziert den Hostnamen, der mit dem Zertifikat verbunden ist. Es gibt keine Anforderung in RFC3280, dass ein Aussteller-DN einen CN haben muss. Die meisten CAs fügen einen CN in den Aussteller-DN ein, aber einige tun dies nicht, wie diese Equifax-CA.
mkchain verwendet externe Dienstprogramme, die vor der Ausführung installiert sein müssen:
Dieses Tool arbeitet mit:
MacOS/FreeBSD:
pkg install getopt)greadlink von coreutils (installiert über homebrew)Siehe dies.
Siehe dies.
GPLv3 : http://www.gnu.org/licenses/
Freie Software, Yeah!