Zertifikate erstellen (OpenSSL): Unterschied zwischen den Versionen
Matt (Diskussion | Beiträge) |
Matt (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 8: | Zeile 8: | ||
* Serververbindungen mit TLS absichern (Computerzertifikate) | * Serververbindungen mit TLS absichern (Computerzertifikate) | ||
* Clients für den Zugriff auf Server mit Zertifikat authentifizieren. | * Clients für den Zugriff auf Server mit Zertifikat authentifizieren. | ||
==Computer-Zertifikat erstellen== | ==Computer-Zertifikat erstellen== | ||
Zeile 18: | Zeile 19: | ||
Es ist wichtig, als Common Name den Hostnamen des Servers einzugeben. Als Anhaltspunkt kann der Name verwendet werden, der im Browser für den Zugriff auf den Server verwendet wird. Dies kann der Servername im lokalen Netzwerk, der Full Qualified Domain Name (FQDN) oder die IP-Adresse des Servers sein. | Es ist wichtig, als Common Name den Hostnamen des Servers einzugeben. Als Anhaltspunkt kann der Name verwendet werden, der im Browser für den Zugriff auf den Server verwendet wird. Dies kann der Servername im lokalen Netzwerk, der Full Qualified Domain Name (FQDN) oder die IP-Adresse des Servers sein. | ||
=== Subject Alternative Name setzen === | |||
Für den Einsatz eines Computerzertifikats um TLS Verbindungen in einem Webserver, z. B. Apache Webserver, abzusichern wird in dem Zertifikat ein Subject Alternative Name benötigt. | |||
Der Subject Alternative Name wird vom Client | |||
Dieser muss in der OpenSSL-Konfigurationsdatei angegeben werden. Dies sieht üblicherweise folgendermaßen aus: | |||
=== Zertifizierungsanfrage erstellen === | === Zertifizierungsanfrage erstellen === | ||
Zeile 25: | Zeile 33: | ||
=== Zertifikat signieren === | === Zertifikat signieren === | ||
Ein Zertifikat kann mit der minimal CA application "ca" erstellt werden: | Ein Zertifikat kann mit der minimal CA application "ca" erstellt werden: | ||
openssl ca | openssl ca -in csr/computer.csr.pem -out certs/computer.cert.pem -notext | ||
Optional kann mit <code>-md sha512</code> eine andere Message Digest Funktion verwendet werden. | Optional kann mit <code>-md sha512</code> eine andere Message Digest Funktion verwendet werden. | ||
Alternativ kann es auch mit mit dem Mehrzweck-Zertifikatwerkzeug "X509" erstellt werden: | Damit der Subject Alternative Name im signierten Zertifikat eingefügt wird, muss beim Signieren der Parameter <code>-extensions v3_req</code> verwendet werden. Damit wird der Abschnitt <code>[ v3_req ]</code> aus der OpenSSL-Konfigurationsdatei verarbeitet: | ||
openssl ca -in csr/computer.csr.pem -out certs/computer.cert.pem -notext -extensions v3_req | |||
Alternativ kann es auch mit mit dem Mehrzweck-Zertifikatwerkzeug "X509" erstellt werden (ungetestet): | |||
openssl x509 -req -in zertifikat.csr -CA ca-root.pem -CAkey ca-key.pem -CAcreateserial -out zertifikat-pub.pem -days 365 -sha512 | openssl x509 -req -in zertifikat.csr -CA ca-root.pem -CAkey ca-key.pem -CAcreateserial -out zertifikat-pub.pem -days 365 -sha512 | ||
Zugriffsrechte anpassen: | Zugriffsrechte anpassen: | ||
Zeile 34: | Zeile 44: | ||
=== Zertifikat überprüfen === | === Zertifikat überprüfen === | ||
Beim erstellten Zertifikat sollten folgende Informationen überprüft werden: | Beim erstellten Zertifikat sollten folgende Informationen überprüft werden: | ||
* Signature Algorithm | * Signature Algorithm | ||
Zeile 43: | Zeile 52: | ||
* X509v3 Extensions (v3_ca) | * X509v3 Extensions (v3_ca) | ||
Diese können folgendermaßen ausgegeben werden: | Diese können folgendermaßen ausgegeben werden: | ||
openssl x509 -in certs/computer.cert.pem -noout -text | |||
== Zertifizierungsstellenzertifikat an Zertifikat anhängen == | |||
Es kann notwendig sein, dass dem Computer- oder Benutzerzertifikat die Zertifizierungskette angehängt wird, z. B. wenn es eine Zwischen-Zertifizierungsstelle gibt. | |||
In diesem Fall wird das Zertifikat der Zwischen-Zertifizierungsstelle oder der Stamm-Zertifizierungsstelle an das erstellte Computer- oder Benutzerzertifikat angehängt: | |||
cat cacert.pem >> certs/computer.cert.pem | |||
[[Kategorie:Kryptographie]] | [[Kategorie:Kryptographie]] | ||
[[Kategorie:Terminal]] | [[Kategorie:Terminal]] | ||
[[Kategorie:OpenSSL]] | [[Kategorie:OpenSSL]] |
Version vom 2. September 2017, 12:07 Uhr
Dieser Artikel beschäftigt sich damit, wie mit OpenSSL Schlüssel und Computer- oder Benutzer-Zertifikate erstellt werden können. Hierfür wird eine Zertifizierungsstelle benötigt.
Die Erstellung einer solchen, selbst signierten Zertifizierungsstelle, ist beschrieben in: Zertifizierungsstelle einrichten (OpenSSL)
Das Grundsätzliche Vorgehen zur Erstellung von Zertifikaten wird hier beschrieben: Grundlagen der PKI
Einsatzmöglichkeiten:
- Serververbindungen mit TLS absichern (Computerzertifikate)
- Clients für den Zugriff auf Server mit Zertifikat authentifizieren.
Computer-Zertifikat erstellen
Privaten Schlüssel erstellen
Privaten Schlüssel "cert.key" mit Schlüssellänge 2048 Byte erstellen:
cd /dir-to-ca/ openssl genrsa -out private/computer.key.pem 2048 chmod 400 private/computer.key.pem
Wenn der Schlüssel für einen Webserver verwendet werden soll, dann empfiehlt es sich, auf den Parameter -aes256
zu verzichten, da sonst bei einem Serverneustart das Passwort abgefragt wird, und diese Frage üblicherweise kein User beantworten kann.
Es ist wichtig, als Common Name den Hostnamen des Servers einzugeben. Als Anhaltspunkt kann der Name verwendet werden, der im Browser für den Zugriff auf den Server verwendet wird. Dies kann der Servername im lokalen Netzwerk, der Full Qualified Domain Name (FQDN) oder die IP-Adresse des Servers sein.
Subject Alternative Name setzen
Für den Einsatz eines Computerzertifikats um TLS Verbindungen in einem Webserver, z. B. Apache Webserver, abzusichern wird in dem Zertifikat ein Subject Alternative Name benötigt.
Der Subject Alternative Name wird vom Client
Dieser muss in der OpenSSL-Konfigurationsdatei angegeben werden. Dies sieht üblicherweise folgendermaßen aus:
Zertifizierungsanfrage erstellen
Zertifikatsanfrage (CSR = Certificate Signing Request) erstellen:
openssl req -new -key private/computer.key.pem -out csr/computer.csr.pem
Zertifikat signieren
Ein Zertifikat kann mit der minimal CA application "ca" erstellt werden:
openssl ca -in csr/computer.csr.pem -out certs/computer.cert.pem -notext
Optional kann mit -md sha512
eine andere Message Digest Funktion verwendet werden.
Damit der Subject Alternative Name im signierten Zertifikat eingefügt wird, muss beim Signieren der Parameter -extensions v3_req
verwendet werden. Damit wird der Abschnitt [ v3_req ]
aus der OpenSSL-Konfigurationsdatei verarbeitet:
openssl ca -in csr/computer.csr.pem -out certs/computer.cert.pem -notext -extensions v3_req
Alternativ kann es auch mit mit dem Mehrzweck-Zertifikatwerkzeug "X509" erstellt werden (ungetestet):
openssl x509 -req -in zertifikat.csr -CA ca-root.pem -CAkey ca-key.pem -CAcreateserial -out zertifikat-pub.pem -days 365 -sha512
Zugriffsrechte anpassen:
chmod 444 certs/computer.cert.pem
Zertifikat überprüfen
Beim erstellten Zertifikat sollten folgende Informationen überprüft werden:
- Signature Algorithm
- Validity Not Before und Not After
- Public Key Algorithm und Länge des Public Key
- Issuer
- Subject
- X509v3 Extensions (v3_ca)
Diese können folgendermaßen ausgegeben werden:
openssl x509 -in certs/computer.cert.pem -noout -text
Zertifizierungsstellenzertifikat an Zertifikat anhängen
Es kann notwendig sein, dass dem Computer- oder Benutzerzertifikat die Zertifizierungskette angehängt wird, z. B. wenn es eine Zwischen-Zertifizierungsstelle gibt.
In diesem Fall wird das Zertifikat der Zwischen-Zertifizierungsstelle oder der Stamm-Zertifizierungsstelle an das erstellte Computer- oder Benutzerzertifikat angehängt:
cat cacert.pem >> certs/computer.cert.pem