SSL request erstellen

Um von einem Zertifizierten Anbieter ein SSL Zertifikat signieren zu lassen, muss man zuerst einen Schlüssel (key) und einen sogenannten Certificate Signing Request (CSR) erstellen.

Dies geht für eine einzelne Domain und auch für mehrere. Bei mehreren Domains im selben Zertifikat spricht man von einem SAN (Subject Alternative Name) Zertifikat.

Inhalt

Diffie-Hellman Parameter

Gegenfalls muss noch ein dhparam file erstellt werden:

openssl dhparam -out dhparam.pem 2048

Hinweis: Die dhparam.pem Datei braucht es nur, wenn diese auch im webserver konfiguriert wird, beispielsweise in nginx mit:

ssl_dhparam /etc/nginx/ssl/dhparam.pem;

Schlüssel generieren

Zuerst muss ein Schlüssel generiert werden:

openssl genrsa -out example.com.key 2048

Certificate-Request erstellen

Nun kann man mit Angabe des keys und der Konfigurationsdatei den CSR erstellen:

openssl req -utf8 -new -out example.com.csr -key example.com.key

[stextbox id=“info“ caption=“Umlaute im Zertifikat“]Damit man im Zertifikat Umlaute (z.B. „Zürich“) vewenden kann, muss man openssl req mit dem Parameter -utf8 aufrufen.[/stextbox]

SSL-Konfiguration anlegen

Damit man die Fragen nach welche bei diesem Kommando kommen (Land, Organisation, Abteilung, usw.) nicht imme rManuell eingeben muss, erstellt man am besten eine openssl Konfigurationsdatei mit minimalen Angaben:

example.com.cnf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
CN = www.example.com

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth 

Bei CN = muss der Domainname eingetragen werden.
Alternativ kann man auch noch zusatzinformationen rein nehmen, z.B.:

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
C =  CH
ST = Zurich
L =  Zurich
O =  Meine Firma
OU = Abteilung XY
CN = www.example.com

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth 

Multi-Domain (SAN) Zertifikat erstellen

Will man ein Zertifikat für mehrere Domains erstellen, muss man die obige Konfigurationsdatei noch etwas erweitern:

example.com.san.cnf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
CN = www.example.com 

[v3_req]
keyUsage = keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names 

[alt_names]
DNS.1  = example.com
DNS.2  = www.example.net
DNS.3  = example.net
DNS.4  = test.example.net 

Bei CN = wird nun der „Haupt Domainname“ und bei DNS.# = alle zusätzlichen Domain Namen mit Zeilenumbruch eingetragen.

Danach wieder normal mit dem openssl Kommando das Zertifikat erstellen:

openssl req -utf8 -new -out example.com.csr -key example.com.key -config example.com.san.cnf

Request prüfen

Ist der CSR erstellt kann man diesen mit folgendem openssl Kommando anschauen:

openssl req -text -noout -verify -in example.com.csr

Zertifikat prüfen

Das Fertige Zertifikat (CRT) kann zum Schluss mit folgendem openssl Kommando überprüft werden:

openssl x509 -in example.com.crt -text -noout

Webseite prüfen

Möchte man das Zertifikat nach einbindung/aktivierung direkt auf der Webseite prüfen, geht das mit dem folgenden Kommando:

openssl s_client -connect example.com:443

Möchte man namensbasierte virtuelle hosts mittels SNI überprüfen, muss zusätzlich noch der Parameter: „-servername“ hinzugefügt werden:

openssl s_client -servername example.com -connect example.com:443

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

One thought on “SSL request erstellen”

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert