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.