21 OpenSSL-Beispiele, die Ihnen in der realen Welt helfen

SSL-Zertifikate mit OpenSSL erstellen, verwalten und umwandeln

OpenSSL ist eines der meistgenutzten Tools im Bereich SSL, um SSL-Zertifikate zu erzeugen, zu konvertieren und zu administrieren.

Es gibt zahlreiche Situationen, in denen Sie OpenSSL auf unterschiedliche Weisen einsetzen müssen. Ich habe hier eine praktische Übersicht der wichtigsten Befehle für Sie zusammengestellt.

In diesem Artikel werden häufig verwendete OpenSSL-Befehle erläutert, die Ihnen in realen Situationen helfen sollen.

Einige der Abkürzungen beziehen sich auf Zertifikate:

  • SSL – Secure Socket Layer
  • CSR – Certificate Signing Request (Zertifikatsignierungsanfrage)
  • TLS – Transport Layer Security
  • PEM – Privacy Enhanced Mail
  • DER – Distinguished Encoding Rules
  • SHA – Secure Hash Algorithm (Sicherer Hash-Algorithmus)
  • PKCS – Public-Key Cryptography Standards (Public-Key-Kryptografiestandards)

Hinweis: Der Kurs zu SSL/TLS-Operationen könnte hilfreich sein, wenn Ihnen die Terminologie noch nicht vertraut ist.

Einen neuen privaten Schlüssel und eine Zertifikatsignierungsanfrage generieren

openssl req -out wdzwdz.csr -newkey rsa:2048 -nodes -keyout wdzwdz.key

Der oben genannte Befehl erstellt eine CSR-Datei und eine 2048-Bit-RSA-Schlüsseldatei. Wenn Sie dieses Zertifikat mit Apache oder Nginx nutzen möchten, müssen Sie diese CSR-Datei an die Zertifizierungsstelle übermitteln, die Ihnen im Gegenzug ein signiertes Zertifikat – meist im DER- oder PEM-Format – aushändigt. Dieses Zertifikat müssen Sie dann auf dem Apache- oder Nginx-Webserver einrichten.

Ein selbstsigniertes Zertifikat erstellen

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Dieser Befehl generiert ein selbstsigniertes Zertifikat sowie eine Schlüsseldatei mit einer 2048-Bit-RSA-Verschlüsselung. Ich habe auch sha256 aufgenommen, da dies als die aktuell sicherste Methode gilt.

Tipp: Standardmäßig ist ein selbstsigniertes Zertifikat nur einen Monat gültig. Sie können die Gültigkeitsdauer mit dem Parameter „–days“ anpassen.

Beispiel: Ein Zertifikat soll für zwei Jahre selbstsigniert sein:

openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem

Die CSR-Datei überprüfen

openssl req -noout -text -in wdzwdz.csr

Eine Überprüfung ist notwendig, um sicherzustellen, dass Sie die CSR mit allen erforderlichen Daten an die ausstellende Behörde schicken.

Einen privaten RSA-Schlüssel erzeugen

openssl genrsa -out private.key 2048

Wenn Sie lediglich einen privaten RSA-Schlüssel generieren müssen, können Sie den obigen Befehl verwenden. Die Zahl 2048 sorgt für eine stärkere Verschlüsselung.

Die Passphrase aus einem Schlüssel entfernen

openssl rsa -in certkey.key -out nopassphrase.key

Wenn Sie eine Passphrase in der Schlüsseldatei nutzen und Apache einsetzen, müssen Sie das Passwort bei jedem Neustart eingeben. Um das ständige Eingeben zu vermeiden, können Sie mit dem obigen Befehl die Passphrase aus einer bestehenden Schlüsseldatei entfernen.

Den privaten Schlüssel verifizieren

openssl rsa -in certkey.key -check

Falls Sie Zweifel an Ihrer Schlüsseldatei haben, nutzen Sie den obigen Befehl zur Verifizierung.

Die Zertifikatsdatei überprüfen

openssl x509 -in certfile.pem -text -noout

Um Zertifikatsdaten wie CN, OU usw. zu überprüfen, können Sie diesen Befehl verwenden, der Ihnen die Zertifikatsdetails anzeigt.

Die Zertifizierungsstelle überprüfen

openssl x509 -in certfile.pem -noout -issuer -issuer_hash

Jedes Zertifikat wird von einer Zertifizierungsstelle signiert. Falls Sie diese überprüfen möchten, nutzen Sie den obigen Befehl.

Den Hash-Wert eines Zertifikats überprüfen

openssl x509 -noout -hash -in bestflare.pem

Eine DER-Datei in das PEM-Format konvertieren

openssl x509 -inform der -in sslcert.der -out sslcert.pem

Normalerweise stellt die Zertifizierungsstelle das SSL-Zertifikat als .der-Datei zur Verfügung. Wenn Sie dieses für Apache oder als .pem-Datei benötigen, hilft Ihnen der obige Befehl.

Eine PEM-Datei in das DER-Format konvertieren

openssl x509 -outform der -in sslcert.pem -out sslcert.der

Falls Sie eine .pem-Datei in eine .der-Datei umwandeln möchten, können Sie diesen Befehl verwenden.

Das Zertifikat und den privaten 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 nutzen müssen, die nur das PKCS#12-Format akzeptiert, können Sie diesen Befehl verwenden, um eine einzelne pfx-Datei mit dem Zertifikat und der Schlüsseldatei zu erstellen.

Tipp: Sie können auch eine Zertifikatskette hinzufügen, indem Sie „–chain“ wie unten verwenden:

openssl pkcs12 -export -out sslcert.pfx -inkey key.pem -in sslcert.pem -chain cacert.pem

Eine CSR-Datei mit einem vorhandenen privaten Schlüssel erstellen

openssl req -out certificate.csr -key existing.key -new

Wenn Sie keinen neuen privaten Schlüssel erzeugen möchten, sondern einen vorhandenen verwenden wollen, können Sie mit diesem Befehl fortfahren.

Den Inhalt des Zertifikats im PKCS12-Format überprüfen

openssl pkcs12 -info -nodes -in cert.p12

PKCS12 ist ein Binärformat, sodass Sie den Inhalt nicht mit Notepad oder einem anderen Editor anzeigen können. Der obige Befehl hilft Ihnen, den Inhalt der PKCS12-Datei einzusehen.

Das PKCS12-Format in ein PEM-Zertifikat umwandeln

openssl pkcs12 -in cert.p12 -out cert.pem

Wenn Sie ein vorhandenes pkcs12-Format mit Apache oder nur im PEM-Format verwenden möchten, ist dies sehr nützlich.

Das SSL-Zertifikat einer bestimmten URL testen

openssl s_client -connect yoururl.com:443 -showcerts

Ich nutze diesen Befehl oft, um das SSL-Zertifikat einer bestimmten URL vom Server zu validieren. Er ist sehr praktisch, um das Protokoll, die Cipher und die Zertifikatsdetails zu prüfen.

Die OpenSSL-Version herausfinden

openssl version

Wenn Sie für die Sicherheit von OpenSSL verantwortlich sind, sollten Sie als erstes die verwendete Version überprüfen.

Das Ablaufdatum des PEM-Dateizertifikats überprüfen

openssl x509 -noout -in certificate.pem -dates

Dies ist nützlich, wenn Sie eine Überwachung zur Validierung durchführen möchten. Es wird Ihnen ein Datum in der „notBefore“- und „notAfter“-Syntax angezeigt. Das „notAfter“-Datum ist relevant, um zu bestätigen, ob ein Zertifikat abgelaufen oder noch gültig ist.

Beispiel:

[[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]#

Das Ablaufdatum des Zertifikats einer SSL-URL prüfen

openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout -enddate

Ein weiteres nützliches Tool, falls Sie das Ablaufdatum des SSL-Zertifikats aus der Ferne oder für eine bestimmte URL überwachen möchten.

Beispiel:

[[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, ob SSL V2 oder V3 für die URL akzeptiert wird

Für SSL V2:

openssl s_client -connect secureurl.com:443 -ssl2

Für die Ü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 absichern und überprüfen möchten, ob SSL V2/V3 aktiviert ist oder nicht, können Sie den obigen Befehl verwenden. Im Falle einer Aktivierung erhalten Sie „CONNECTED“, ansonsten einen „Handshake-Fehler“.

Überprüfen, ob eine bestimmte Cipher für eine URL akzeptiert wird

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443

Wenn Sie mit Sicherheitsberichten arbeiten und Penetrationstestergebnisse zeigen, dass einige schwache Ciphers akzeptiert werden, können Sie den obigen Befehl zur Validierung nutzen.

Sie müssen natürlich die Cipher und die URL ändern, gegen die Sie testen möchten. Wenn die genannte Cipher akzeptiert wird, erhalten Sie „CONNECTED“, ansonsten einen „Handshake-Fehler“.

Ich hoffe, die obigen Befehle helfen Ihnen dabei, mehr über OpenSSL zu erfahren, um SSL-Zertifikate für Ihre Webseite zu verwalten.