SSL-Zertifikate mit OpenSSL erstellen, verwalten und konvertieren
Einer der beliebtesten SSL-Befehle zum Erstellen, Konvertieren und Verwalten von SSL-Zertifikaten ist OpenSSL.
Es wird viele Situationen geben, in denen Sie auf verschiedene Weise mit OpenSSL umgehen müssen, und hier habe ich sie für Sie in Form eines praktischen Spickzettels aufgelistet.
In diesem Artikel gehe ich auf häufig verwendete OpenSSL-Befehle ein, die Ihnen in der Praxis helfen werden.
Einige der Abkürzungen im Zusammenhang mit Zertifikaten.
- SSL – Sichere Socket-Schicht
- CSR – Antrag auf Unterzeichnung eines Zertifikats
- TLS – Transport Layer Security
- PEM – Privacy Enhanced Mail (datenschutzfreundliche E-Mail)
- DER – Unterschiedene Kodierungsregeln
- SHA – Sicherer Hash-Algorithmus
- PKCS – Public-Key-Kryptographie-Standards
Hinweis: Ein SSL/TLS-Kurs wäre hilfreich, wenn Sie mit den Begriffen nicht vertraut sind.
Erstellen Sie einen neuen privaten Schlüssel und eine Zertifikatssignierungsanfrage
openssl req -out geekflare.csr -newkey rsa:2048 -nodes -keyout geekflare.key
Der obige Befehl erzeugt eine CSR und eine 2048-Bit RSA-Schlüsseldatei. Wenn Sie dieses Zertifikat in Apache oder Nginx verwenden möchten, müssen Sie diese CSR-Datei an die Zertifizierungsstelle senden. Sie erhalten dann ein signiertes Zertifikat, meist im Format der
oder pem
, das Sie im Apache oder Nginx Webserver konfigurieren müssen.
Ein selbstsigniertes Zertifikat erstellen
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Der obige Befehl erzeugt ein selbstsigniertes Zertifikat und eine Schlüsseldatei mit 2048-bit RSA. Ich habe auch sha256 angegeben, da es derzeit als am sichersten gilt.
Tipp: Standardmäßig wird ein selbstsigniertes Zertifikat generiert, das nur einen Monat lang gültig ist. Sie können also den Parameter -days definieren, um die Gültigkeit zu verlängern.
Beispiel: Ein selbstsigniertes Zertifikat ist zwei Jahre lang gültig.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Überprüfen Sie die CSR-Datei
openssl req -noout -text -in geekflare.csr
Die Überprüfung ist wichtig, um sicherzustellen, dass Sie die CSR mit den erforderlichen Details an die ausstellende Behörde senden.
Privaten RSA-Schlüssel erstellen
openssl genrsa -out private.key 2048
Wenn Sie nur einen privaten RSA-Schlüssel erzeugen möchten, können Sie den obigen Befehl verwenden. Ich habe 2048 für eine stärkere Verschlüsselung angegeben.
Passphrase aus dem Schlüssel entfernen
openssl rsa -in certkey.key -out nopassphrase.key
Wenn Sie eine Passphrase in der Schlüsseldatei verwenden und den Apache einsetzen, müssen Sie bei jedem Start das Passwort eingeben. Wenn Sie es leid sind, ein Passwort einzugeben, können Sie den obigen Befehl openssl rsa -in geekflare.key -check verwenden, um den Passphrase-Schlüssel aus einem vorhandenen Schlüssel zu entfernen.
Privaten Schlüssel überprüfen
openssl rsa -in certkey.key -check
Wenn Sie Zweifel an Ihrer Schlüsseldatei haben, können Sie den obigen Befehl zur Überprüfung verwenden.
Zertifikatsdatei überprüfen
openssl x509 -in certfile.pem -text -noout
Wenn Sie die Zertifikatsdaten wie CN, OU usw. überprüfen möchten, können Sie den obigen Befehl verwenden, der Ihnen die Zertifikatsdetails liefert.
Überprüfen Sie die Signierstelle des Zertifikats
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
Die Zertifizierungsstelle signiert jedes Zertifikat, und falls Sie sie überprüfen müssen.
Hash-Wert eines Zertifikats prüfen
openssl x509 -noout -hash -in bestflare.pem
DER in PEM-Format umwandeln
openssl x509 -inform der -in sslcert.der -out sslcert.pem
Normalerweise erhalten Sie von der Zertifizierungsstelle SSL-Zertifikate im .der-Format. Wenn Sie diese im Apache- oder .pem-Format verwenden möchten, hilft Ihnen der obige Befehl.
PEM in DER-Format umwandeln
openssl x509 -outform der -in sslcert.pem -out sslcert.der
Falls Sie das .pem Format in .der umwandeln müssen
Zertifikat und privater Schlüssel in das PKCS#12-Format konvertieren
openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.pem
Wenn Sie ein Zertifikat mit einer Java-Anwendung oder einer anderen Anwendung verwenden möchten, die nur das PKCS#12-Format akzeptiert, können Sie den obigen Befehl verwenden, der eine einzelne pfx-Datei mit Zertifikat und Schlüssel erzeugt.
Tipp: Sie können auch Kettenzertifikate einschließen, indem Sie -chain wie unten angeben.
openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.pem -chain cacert.pem
CSR mit einem vorhandenen privaten Schlüssel erstellen
openssl req -out certificate.csr -key existing.key -new
Wenn Sie keinen neuen privaten Schlüssel erstellen wollen, sondern einen vorhandenen verwenden möchten, können Sie den obigen Befehl verwenden.
Inhalt des Zertifikats im PKCS12-Format prüfen
openssl pkcs12 -info -nodes -in cert.p12
PKCS12 ist ein Binärformat, so dass Sie den Inhalt nicht in Notepad oder einem anderen Editor anzeigen können. Mit dem obigen Befehl können Sie sich den Inhalt der PKCS12-Datei ansehen.
PKCS12-Format in PEM-Zertifikat konvertieren
openssl pkcs12 -in cert.p12 -out cert.pem
Wenn Sie das vorhandene pkcs12-Format mit Apache oder nur im pem-Format verwenden möchten, ist dieser Befehl nützlich.
SSL-Zertifikat einer bestimmten URL testen
openssl s_client -connect yoururl.com:443 -showcerts
Ich verwende dies häufig, um das SSL-Zertifikat einer bestimmten URL vom Server aus zu überprüfen. Dies ist sehr praktisch, um das Protokoll, die Chiffre und die Zertifikatsdetails zu überprüfen.
OpenSSL-Version herausfinden
openssl-version
Wenn Sie dafür verantwortlich sind, dass OpenSSL sicher ist, dann ist wahrscheinlich eines der ersten Dinge, die Sie tun müssen, die Überprüfung der Version.
Ablaufdatum des PEM-Datei-Zertifikats prüfen
openssl x509 -noout -in certificate.pem -dates
Nützlich, wenn Sie eine Überwachung zur Überprüfung der Gültigkeit planen. Es zeigt Ihnen ein Datum in der Syntax notBefore und notAfter an. notAfter ist ein Datum, das Sie überprüfen müssen, um festzustellen, ob ein Zertifikat abgelaufen oder noch gültig ist.
Beispiel:
[root@Chandan opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [root@Chandan opt]#
Ablaufdatum des SSL-URL-Zertifikats prüfen
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout -enddate
Eine weitere nützliche Funktion, wenn Sie das Ablaufdatum eines SSL-Zertifikats oder einer bestimmten URL aus der Ferne überwachen möchten.
Bsp:
[root@Chandan opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=Dec 8 00:00:00 2015 GMT
Prüfen Sie, ob SSL V2 oder V3 auf der URL akzeptiert wird
Um SSL V2 zu überprüfen
openssl s_client -connect secureurl.com:443 -ssl2
Um SSL V3 zu prüfen
openssl s_client -verbinden Sie secureurl.com:443 -ssl3
Um TLS 1.0 zu überprüfen
openssl s_client -verbinden Sie secureurl.com:443 -tls1
Um TLS 1.1 zu überprüfen
openssl s_client -verbinden Sie secureurl.de:443 -tls1_1
So überprüfen Sie TLS 1.2
openssl s_client -verbinden Sie secureurl.com:443 -tls1_2
Wenn Sie einen Webserver sichern und überprüfen müssen, ob SSL V2/V3 aktiviert ist oder nicht, können Sie den obigen Befehl verwenden. Falls aktiviert, erhalten Sie “CONNECTED“, andernfalls “handshake failure”
Überprüfen Sie, ob die bestimmte Chiffre auf der URL akzeptiert wird
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Wenn Sie an Sicherheitsergebnissen arbeiten und die Ergebnisse von Pen-Tests zeigen, dass einige der schwachen Chiffren akzeptiert werden, können Sie den obigen Befehl zur Überprüfung verwenden.
Natürlich müssen Sie die Verschlüsselung und die URL, gegen die Sie testen wollen, ändern. Wenn die genannte Chiffre akzeptiert wird, erhalten Sie “CONNECTED“, andernfalls “handshake failure”
Ich hoffe, die obigen Befehle helfen Ihnen, mehr über OpenSSL zu erfahren, um SSL-Zertifikate für Ihre Website zu verwalten.