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