Skip to content

Instantly share code, notes, and snippets.

@Friedjof
Last active October 4, 2024 21:00
Show Gist options
  • Save Friedjof/7ac9e57647070965921f6dc3ace97a91 to your computer and use it in GitHub Desktop.
Save Friedjof/7ac9e57647070965921f6dc3ace97a91 to your computer and use it in GitHub Desktop.
Generierung und Signierung durch eigener CA von TLS Zertifikaten für zB das Heimnetzwerk

Zertifikat für eine Domain/IP erstellen

Wichtig: cert ggf. durch den Namen des zu zertifizierenden Services ersetzen. Um ein Zertifikat zu generieren muss die CA Datei vorliegen, wie oben generiert. Auch muss das Password der CA-Datei bekannst sein.

openssl genpkey -algorithm RSA -out cert.key -outform PEM -pkeyopt rsa_keygen_bits:2048

Im Anschluss an die cert.key Datei muss nun die server.csr Datei erzeugt werden mit folgendem Befehl.

openssl req -new -key cert.key -out cert.csr

Für die weitere Konfiguration muss eine Textdatei angelegt werden mit dem Namen cert.ext und mit folgendem Inhalt beschrieben werden.

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
IP.1 = <IP>
DNS.1 = <Domain>

Unter [alt_names] müssen unbedingt IP und/oder Domain eingefügt werden. Falls keine Domain existiert muss die Zeile gelöscht werden. Soll die Zertifikatsdatei für mehrere IPs und/oder Domains gültig sein, können diese durch Nummerierung auch hinzugefügt werden. Z.B.:

[...]
[alt_names]
IP.1 = <IP_1>
IP.2 = <IP_2>
IP.3 = <IP_3>
DNS.1 = <Domain_1>
DNS.2 = <Domain_2>

Erzeugen der .crt Zertifikatsdatei

openssl x509 -req -in cert.csr -CA self-signed-ca-cert.crt -CAkey private-ca.key -CAcreateserial -out cert.crt -days 365 -sha256 -extfile cert.ext

Durch das Anpassen des Parameters -days kann die Gültigkeit des Zertifikates festgelegt werden. In diesem Fall beträgt die Gültigkeit genau ein Jahr.

Die verschiedenen Zertifikatdateitypen

.crt zu .pem konvertieren

Quelle: https://stackoverflow.com/questions/4691699/how-to-convert-crt-to-pem

openssl x509 -in cert.crt -out cert.pem -outform PEM

oder für manche Webserver (wie auch eine fritzbox)

cat cert.crt cert.key > cert.pem

Sonst gibt es noch den p12 Standard

openssl pkcs12 -export -inkey cert.key -in cert.pem -out cert.p12 -password pass:<password>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment