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
One thought on “SSL request erstellen”