Wie man mit OpenSSL Zertifikate generiert

Juni 02, 2020 Sicherheit und Compliance, MOVEit

OpenSSL ist eine der am weitesten verbreiteten Software zur Zertifikatsverwaltung und -erstellung für einen Großteil der modernen Computertechnik.

OpenSSL kann auch als komplizierte Software mit vielen Optionen angesehen werden, die oft durch die unzähligen Möglichkeiten zur Konfiguration und Bereitstellung von SSL-Zertifikaten noch verstärkt werden.

Erste Schritte

OpenSSL ist normalerweise in den meisten Linux-Distributionen enthalten. Im Falle von Ubuntu wird durch einfaches Ausführen von apt install OpenSSL sichergestellt, dass Sie die Binärdatei verfügbar und in der neuesten Version haben. OpenSSL unter Windows ist etwas schwieriger, da Sie eine vorkompilierte Binärdatei installieren müssen, um loszulegen.

Windows

Eine solche Quelle, die vorkompilierte OpenSSL-Binärdateien bereitstellt, ist die folgende Website von SLProWeb. Die empfohlene Endbenutzerversion, die sowohl ausführbare Dateien als auch MSI-Installationen anbietet, ist die Light x64 MSI-Installation. Die Standardoptionen sind am einfachsten zu starten.

Überprüfen Sie, ob die Installation funktioniert, indem Sie den folgenden Befehl ausführen. Beachten Sie, dass dieser Befehl in der PowerShell-Umgebung ausgeführt wurde (daher der & vor dem Befehl).

& "C:\\Programme\\OpenSSL-Win64\\bin\\openssl.exe" Version

Um die Ausführung dieses Befehls zu vereinfachen, können Sie den Pfad in PowerShell so ändern, dass er die ausführbare Datei $Env:Path = $Env:Path + "; C:\\Programme\\OpenSSL-Win64\\bin"

Bereitstellen eines Zertifikats

Es gibt viele verschiedene Möglichkeiten, Zertifikate zu generieren, aber die Anwendungsfälle, die normalerweise auftauchen, sind die folgenden.

  • Selbstsignierte Zertifikate
  • Zertifikatsignieranforderungen (CSR)
  • Überprüfen der Zertifikatinformationen

Selbstsignierte Zertifikate

Ein gängiger Servervorgang besteht darin, ein selbstsigniertes Zertifikat zu generieren. Es gibt viele Gründe dafür, z. B. das Testen oder Verschlüsseln der Kommunikation zwischen internen Servern. Der folgende Befehl generiert einen privaten Schlüssel und ein Zertifikat

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:4096 -keyout private.key -out certificate.crt

Lassen Sie uns die verschiedenen Parameter aufschlüsseln, um zu verstehen, was passiert.

  • req - An OpenSSL übergebener Befehl zum Erstellen und Verarbeiten von Zertifikatsanforderungen in der Regel im PKCS#10-Format.
  • -x509 - Mit diesem Mehrzweckbefehl kann OpenSSL das Zertifikat wie eine Zertifizierungsstelle signieren. X.509 bezieht sich auf ein digital signiertes Dokument nach RFC 5280.
  • -sha256 - Dies ist der Hash, der beim Verschlüsseln des Zertifikats verwendet werden soll.
  • -nodes - Dieser Befehl ist für kein DES, was bedeutet, dass der private Schlüssel nicht kennwortgeschützt ist.
  • -Tage - Die Anzahl der Tage, an denen das Zertifikat gültig ist.
  • -newkey - Das Format des Schlüssels, in diesem Fall ein RSA-Schlüssel mit 4096-Bit-Verschlüsselung.
  • -keyout - Der Speicherort für die Ausgabe des privaten Schlüssels des selbstsignierten Zertifikats.
  • -out - Der Speicherort für die Ausgabe der Zertifikatsdatei selbst.

Sobald das Zertifikat generiert wurde, sollten wir überprüfen, ob es gemäß den von uns festgelegten Parametern korrekt ist.

openssl x509 -in certificate.crt -text -noout

Die Parameter hier sind für die Überprüfung eines x509-Typzertifikats. Die Kombination ermöglicht es, das Zertifikat in einem Format auszugeben, das für eine Person leichter lesbar ist.

  • x509 - Dies ist ein Mehrzweckbefehl, und in Kombination mit den anderen Parametern hier dient er zum Abrufen von Informationen über die im Zertifikat übergebenen Befehle.
  • -in - Das Zertifikat, das wir überprüfen.
  • -text - Entfernt die Textkopfzeilen aus der Ausgabe.
  • -noout - Muss nicht ausgegeben werden, um die codierte Version des Zertifikats nicht auszugeben

Zertifikatsignieranforderung

Der nächsthäufigste Anwendungsfall von OpenSSL ist das Erstellen von Zertifikatsignieranforderungen zum Anfordern eines Zertifikats von einer vertrauenswürdigen Zertifizierungsstelle.

openssl req -new -newkey rsa:2048 -nodes -out request.csr -keyout private.key

Ähnlich wie beim vorherigen Befehl zum Generieren eines selbstsignierten Zertifikats generiert dieser Befehl eine CSR. Sie werden feststellen, dass die Parameter -x509, -sha256und -days fehlen. Indem wir diese ausschalten, sagen wir OpenSSL, dass eine andere Zertifizierungsstelle das Zertifikat ausstellen wird. In diesem Fall lassen wir die Option -nodes aktiviert, um nicht zur Eingabe eines Kennworts mit dem privaten Schlüssel aufzufordern.

Um zu überprüfen, ob die CSR korrekt ist, führen wir erneut einen ähnlichen Befehl aus, jedoch mit dem hinzugefügten Parameter -verify. Mit diesem Befehl wird überprüft, ob die generierte CSR korrekt ist. Dies ist ein umsichtiger Schritt, bevor Sie sich an eine Zertifizierungsstelle senden.

openssl req -in request.csr -text -noout -verify

Schlussfolgerung

OpenSSL ist ein komplexes und leistungsstarkes Programm. Obwohl dieser Artikel nur an der Oberfläche dessen kratzt, was getan werden kann, sind dies häufige und wichtige Vorgänge, die im Allgemeinen von Systemadministratoren ausgeführt werden. Es gibt noch viel mehr zu lernen, aber mit diesem Ausgangspunkt hat ein IT-Experte eine großartige Grundlage, auf der er aufbauen kann!

Adam Bertram

Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.