Erstellen, verwalten und konvertieren Sie SSL-Zertifikate mit OpenSSL
Einer der beliebtesten Befehle in SSL zum Erstellen, Konvertieren und Verwalten von SSL-Zertifikaten ist OpenSSL.
Es wird viele Situationen geben, in denen Sie auf unterschiedliche Weise mit OpenSSL umgehen müssen, und hier habe ich sie als praktisches Spickzettel für Sie aufgelistet.
In diesem Artikel werde ich über häufig verwendete OpenSSL-Befehle sprechen, um Ihnen in der realen Welt zu helfen.
Einige der Abkürzungen beziehen sich auf Zertifikate.
- SSL – Secure Socket Layer
- CSR – Zertifikatsignierungsanforderung
- TLS – Transport Layer Security
- PEM – Privacy Enhanced Mail
- DER – Distinguished Encoding Rules
- SHA – Sicherer Hash-Algorithmus
- PKCS – Public-Key-Kryptografiestandards
Notiz: SSL/TLS-Betriebskurs wäre hilfreich, wenn Sie mit den Begriffen nicht vertraut sind.
Inhaltsverzeichnis
Erstellen Sie einen neuen privaten Schlüssel und eine Zertifikatsignieranforderung
openssl req -out wdzwdz.csr -newkey rsa:2048 -nodes -keyout wdzwdz.key
Der obige Befehl generiert CSR und eine 2048-Bit-RSA-Schlüsseldatei. Wenn Sie beabsichtigen, dieses Zertifikat in Apache oder Nginx zu verwenden, müssen Sie diese CSR-Datei an die Zertifizierungsstelle senden, die Ihnen ein signiertes Zertifikat, meist im Der- oder Pem-Format, gibt, das Sie im Apache- oder Nginx-Webserver konfigurieren müssen .
Erstellen Sie ein selbstsigniertes Zertifikat
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Der obige Befehl generiert ein selbstsigniertes Zertifikat und eine Schlüsseldatei mit 2048-Bit-RSA. Ich habe auch sha256 aufgenommen, da es im Moment als am sichersten gilt.
Tipp: Standardmäßig wird ein selbstsigniertes Zertifikat generiert, das nur einen Monat gültig ist. Sie können also erwägen, den Parameter –days zu definieren, um die Gültigkeit zu verlängern.
Bsp.: zwei Jahre lang selbst unterzeichnet sein.
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 wdzwdz.csr
Die Überprüfung ist unerlässlich, um sicherzustellen, dass Sie CSR mit den erforderlichen Details an die Ausstellerbehörde senden.
Erstellen Sie einen privaten RSA-Schlüssel
openssl genrsa -out private.key 2048
Wenn Sie nur einen privaten RSA-Schlüssel generieren müssen, können Sie den obigen Befehl verwenden. Ich habe 2048 für eine stärkere Verschlüsselung eingefügt.
Entfernen Sie die Passphrase aus dem Schlüssel
openssl rsa -in certkey.key -out nopassphrase.key
Wenn Sie eine Passphrase in der Schlüsseldatei verwenden und Apache verwenden, müssen Sie bei jedem Start das Passwort eingeben. Wenn Sie sich über die Eingabe eines Passworts ärgern, können Sie mit dem obigen openssl rsa -in wdzwdz.key -check den Passphrase-Schlüssel aus einem vorhandenen Schlüssel entfernen.
Verifizieren Sie den privaten Schlüssel
openssl rsa -in certkey.key –check
Wenn Sie an Ihrer Schlüsseldatei zweifeln, können Sie den obigen Befehl zur Überprüfung verwenden.
Überprüfen Sie die Zertifikatsdatei
openssl x509 -in certfile.pem -text –noout
Wenn Sie Zertifikatsdaten wie CN, OU usw. validieren möchten, können Sie einen obigen Befehl verwenden, der Ihnen Zertifikatsdetails liefert.
Überprüfen Sie die Zertifizierungsstelle
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
Die Zertifizierungsstelle signiert jedes Zertifikat und falls Sie es überprüfen müssen.
Überprüfen Sie den Hash-Wert eines Zertifikats
openssl x509 -noout -hash -in bestflare.pem
Konvertieren Sie DER in das PEM-Format
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Normalerweise gibt Ihnen die Zertifizierungsstelle ein SSL-Zertifikat im .der-Format, und wenn Sie sie im Apache- oder .pem-Format verwenden müssen, hilft Ihnen der obige Befehl.
Konvertieren Sie PEM in das DER-Format
openssl x509 –outform der –in sslcert.pem –out sslcert.der
Falls Sie das .pem-Format in .der ändern müssen
Konvertieren Sie das Zertifikat und den privaten Schlüssel in das PKCS#12-Format
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Wenn Sie ein Zertifikat mit der Java-Anwendung oder mit einer anderen verwenden müssen, die nur das PKCS#12-Format akzeptiert, können Sie den obigen Befehl verwenden, der ein einzelnes pfx mit Zertifikat und Schlüsseldatei generiert.
Tipp: Sie können auch ein Kettenzertifikat einschließen, indem Sie –chain wie unten übergeben.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Erstellen Sie CSR mit einem vorhandenen privaten Schlüssel
openssl req –out certificate.csr –key existing.key –new
Wenn Sie keinen neuen privaten Schlüssel erstellen möchten, anstatt einen vorhandenen zu verwenden, können Sie mit dem obigen Befehl fortfahren.
Überprüfen Sie den Inhalt des Zertifikats im PKCS12-Format
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 ist ein Binärformat, sodass Sie den Inhalt nicht in Notepad oder einem anderen Editor anzeigen können. Der obige Befehl hilft Ihnen, den Inhalt der PKCS12-Datei anzuzeigen.
Konvertieren Sie das PKCS12-Format in ein PEM-Zertifikat
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 dies nützlich.
Testen Sie das SSL-Zertifikat einer bestimmten URL
openssl s_client -connect yoururl.com:443 –showcerts
Ich verwende dies ziemlich oft, um das SSL-Zertifikat einer bestimmten URL vom Server zu validieren. Dies ist sehr praktisch, um das Protokoll, die Chiffre und die Zertifikatsdetails zu validieren.
Finden Sie die OpenSSL-Version heraus
openssl version
Wenn Sie dafür verantwortlich sind, dass OpenSSL sicher ist, müssen Sie wahrscheinlich als Erstes die Version überprüfen.
Überprüfen Sie das Ablaufdatum des PEM-Dateizertifikats
openssl x509 -noout -in certificate.pem -dates
Nützlich, wenn Sie vorhaben, eine Überwachung durchzuführen, um die Gültigkeit zu überprüfen. Es zeigt Ihnen ein Datum in notBefore- und notAfter-Syntax. notAfter ist eine, die Sie überprüfen müssen, um zu bestätigen, ob ein Zertifikat abgelaufen oder noch gültig ist.
Ex:
[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [[email protected] opt]#
Überprüfen Sie das Ablaufdatum des Zertifikats der SSL-URL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Ein weiteres nützliches Tool, wenn Sie das Ablaufdatum des SSL-Zertifikats aus der Ferne oder eine bestimmte URL überwachen möchten.
Ex:
[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=Dec 8 00:00:00 2015 GMT
Überprüfen Sie, ob SSL V2 oder V3 für die URL akzeptiert wird
Um SSL V2
openssl s_client -connect secureurl.com:443 -ssl2
Zur Überprüfung von SSL V3
openssl s_client -connect secureurl.com:443 –ssl3
So überprüfen Sie TLS 1.0
openssl s_client -connect secureurl.com:443 –tls1
So überprüfen Sie TLS 1.1
openssl s_client -connect secureurl.com:443 –tls1_1
So überprüfen Sie TLS 1.2
openssl s_client -connect 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. Wenn aktiviert, erhalten Sie „VERBUNDEN“, ansonsten „Handshake-Fehler“.
Überprüfen Sie, ob die bestimmte Chiffre für die URL akzeptiert wird
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Wenn Sie an Sicherheitsergebnissen arbeiten und Pentestergebnisse zeigen, dass einige der schwachen Chiffren akzeptiert werden, können Sie den obigen Befehl zur Validierung verwenden.
Natürlich müssen Sie die Chiffre und die URL ändern, gegen die Sie testen möchten. Wenn die erwähnte Chiffre akzeptiert wird, erhalten Sie „VERBUNDEN“, sonst „Handshake-Fehler“.
Ich hoffe, die obigen Befehle helfen Ihnen, mehr über OpenSSL zu erfahren, um SSL-Zertifikate für Ihre Website zu verwalten.