CA erzeugen

CA Key erstellen:

openssl genrsa -aes256 -out ca-key.pem 4096

CA Root Zertifikat erstellen:

openssl req -x509 -new -nodes -extensions v3_ca -key ca-key.pem -days 1024 -out ca-root.pem -sha512
Dieses Zertifikat muss auf den Clients installiert und als vertrauenswürdig eingestellt werden.

Zertifikat erzeugen

Im Beispiel wird ein Zertfikat für den Host pdns1.bluescreengenerator.lanerzeugt.

Zertifikats-Key erstellen:

openssl genrsa -out pdns1.bluescreengenerator.lan-key.pem 4096

CSR erstellen:

openssl req -config openssl.cnf -new -key pdns1.bluescreengenerator.lan-key.pem -out pdns1.bluescreengenerator.lan.csr -sha512

Inhalt der openssl.cnf:

[ CA_default]
copy_extensions=        none
default_ca=             bluescreengenerator-CA


[ bluescreengenerator-CA]
certificate=            ./ca-root.pem
private_key=            ./ca-key.pem


[ req ]
default_bits=           4096
distinguished_name=     req_distinguished_name
attributes=             req_attributes
#x509_extensions=        v3_ca

#prompt=                 no
req_extensions=         v3_req


[ req_distinguished_name ]
countryName=                    Country name (2 letter code)
countryName_default=            DE
stateOrProvinceName=            State or Province Name
stateOrProvinceName_default=    SL
localityName=                   Locality Name (eg. city)
localityName_default=           Racoon City
organizationName=               Organization Name (eg. company)
organizationName_default=       Bluescreengenerator LAN
organitationUnitName=           Organization Unit Name (eg. department)
organitationUnitName_default=   
commonName=                     Common Name (eq. server hostname)
commonName_default=             
emailAddress=                   Email Address
emailAddress_default=           webmaster@bluescreengenerator.lan

[ req_attributes ]


[ v3_req ]
basicConstraints       = critical, CA:FALSE
keyUsage               = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign

Zertifikat erstellen

openssl x509 -req -in pdns1.bluescreengenerator.lan.csr -CA ca-root.pem -CAkey ca-key.pem  -CAcreateserial -out pdns1.bluescreengenerator.lan-crt.pem -days 3650 -sha512 -extfile v3.ext

Inhalt der v3.ext:

subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints       = critical, CA:FALSE
keyUsage               = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment, keyAgreement, keyCertSign
subjectAltName         = @alt_names
issuerAltName          = issuer:copy

[alt_names]
DNS.1 = pdns1.bluescreengenerator.lan
IP.1 = 192.0.2.1

Der Hostname muss als SAN im Zertifikat enthalten sein, das geht nur über den Umweg des extfiles. Die openssl.cnfund die v3.ext sollten der Einfachheit halber im selben Ordner liegen, in dem auch die Zertifikate erstellt werden.

Für nginx muss das Zertifikat der CA dem Zertifikat des Hosts in derselben Datei angehängt werden.

Erstellen eines PFX-Zertifikates

openssl pkcs12 -export -out pdns1.bluescreengenerator.lan.pfx -inkey pdns1.bluescreengenerator.lan-key.pem -in pdns1.bluescreengenerator.lan-crt.pem -certfile ca-root.pem