Schlagwort-Archive: CSR

openssl: CSR für ein SSL-Server-Zertifikat mit mehreren Host-Namen erzeugen

Um ein SSL-Server-Zertifikat auf einem Server unter mehreren Host-Namen einsetzen zu können, muss das Zertifikat alle diese Host-Namen als sogenannte alternative Namen (SubjectAlternativeName, SAN) enthalten. Häufig davon betroffen sind Zertifikate für die Haupt-Web-Präsenz einer Einrichtung, die sowohl unter dem Host-Namen mit dem traditionellen www im Host-Namen als auch einfach unter der „blanken“ Haupt-Domain zu erreichen ist, z. B. unter www.example.org und example.org. Entsprechende Zertifikatanträge benötigen daher am besten einen Certificate Signing Request (CSR), der schon alle benötigten alternativen Namen enthält. Wird zum Erzeugen des CSRs das Kommandozeilenwerkzeug openssl genutzt, so sind diese Art von CSRs nur mit einer speziellen openssl-Konfigurationsdatei zu erzeugen.

Unten eine Beispielkonfigurationsdatei für openssl, deren Aufruf mit dem angegebenen Kommando sowohl das Schlüsselmaterial als auch den CSR mit dem angegebenen SubjectDN und den alternativen Namen erzeugt:

#
# Filename: openssl-www.example.org.conf
#
# Sample openssl configuration file to generate a key pair and a PKCS#10 CSR
# with included requested SubjectAlternativeNames (SANs)
#
# Sample openssl commandline command:
#
# openssl req -config ./openssl-www.example.org.conf -new -keyout www.example.org-key.pem -out www.example.org-csr.pem
#
# To remove the passphrase from the private key file use
#
# openssl rsa -in www.example.org-key.pem -out www.example.org-key.pem
#
# This eases automatic startup of the SSL/TLS-server when restarted or
# rebooted. Check for secure file access permissions on the private key file.
# Do not transfer the private key unencrypted over network connections.
#
# If generated directly on a secure filesystem with proper secure file access
# permissions on the server system add option -nodes to omit setting the
# secret key's passphrase protection - this eases automatic startup of the
# SSL/TLS-server when restarted or rebooted.
#
# To set an AES256 passphrase on the private key file use
#
# openssl rsa -aes256 -in www.example.org-key.pem -out www.example.org-key.pem
#

RANDFILE=/dev/urandom

[ req ]
default_bits       = 4096 # key length 4096 bits RSA
distinguished_name = req_distinguished_name
req_extensions     = req_cert_extensions
default_md         = sha256
dirstring_type     = nombstr
prompt             = no

[ req_distinguished_name ]

# requested SubjectDN
#
C   = DE
ST  = Bundesland
L   = Stadt
O   = Einrichtung
1.OU= Abteilung
2.OU= Team
CN  = www.example.org

[req_cert_extensions]

subjectAltName=@subject_alt_name

[ subject_alt_name ]

# requested SubjectAlternativeNames (SANs)
#
# SANs of type DNS
# change those FQDNs to real FQDNs in domains registered to your organisation
#
DNS.1=www.example.org
DNS.2=example.org
DNS.3=www.example.net
DNS.4=example.net

# SANs of type IP
# IP#s are normally not needed in certificates
# change those RFC 1918 IP#s to real IP#s assigned to your organisation
#
#IP.1=10.11.12.13
#IP.2=192.168.2.42

Ein äquivalenter Einzeiler für die Linux-Kommandozeile ist:

#> openssl req -newkey rsa:4096 -sha256 -keyout www.example.org-key.pem -out www.example.org-csr.pem -batch -subj "/C=DE/ST=Bundesland/L=Stadt/O=Einrichtung/OU=Abteilung/OU=Team/CN=www.example.org" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:www.example.org,DNS:example.org,DNS:www.example.net,DNS:example.net"))

Beispielangaben für den SubjectDN, die Host-Namen und ggf. IP-Adressen sind natürlich an die lokalen Gegebenheiten anzupassen.

(rkm, 01.12.2015)

VMware 5.5: CSRs ohne IP-Adressen und kurzen Host-Namen mit dem „SSL Certificate Automation Tool“ erzeugen

Das „SSL Certificate Automation Tool“ von VMware 5.5 unterstützt die VMware-Administration dabei, die für die VMware-Installation nötigen SSL-Zertifikate zu beantragen und zu installieren. Inbesondere erzeugt das Werkzeug die zur Zertifikatantragstellung nötigen Certificate Signing Requests (CSRs).

Allerdings akzeptieren die RA-Oberflächen und -Schnittstellen der DFN-PKI seit dem 1. November 2015 keine CSRs mehr, die interne Domain-Namen,  „kurze“ Host-Namen (also Host-Namen ohne den abschließenden Domain-Anteil) oder für den privaten Gebrauch reservierte IP-Adressen beinhalten. Der Hintergrund hierfür ist eine Entscheidung des CA/Browser-Forums, über die hier schon im Beitrag Interne Domainnamen ausführlich berichtet wurde.

Da in VMware-Installationen aus verschiedenen Gründen auch gerne auf die für den privaten Gebrauch reservierten IP-Adressen (z. B. 10.x.y.z, siehe auch RFC 1918) zurückgegriffen wird und das „SSL Certificate Automation Tool“ außerdem sowohl diese IP-Adressen als auch die kurzen Host-Namen (VMware-Terminologie „short name“) mit in die erzeugten CSRs aufnimmt, kommt es bei der Zertifikatantragstellung bei der DFN-PKI zu Fehlermeldungen über im CSR enthaltene nicht erlaubte Namen. Zertifikatanträge mit derartigen CSRs werden schon im Vorfeld aussortiert und nicht angenommen.

Je nach lokaler Situation kann nun das zum „SSL Certificate Automation Tool“ gehörende Skript ./tools/generate-cdr.bat dahingehend angepasst werden, dass die erzeugten CSRs wieder in Zertifikatanträgen angenommen werden.

Im Skript generate-cdr.bat muss die Zeile 33 (Stand: Version 5.5)

echo subjectAltName = IP:%gen_cert_server_ip%, DNS:%gen_cert_server_short_name%, DNS:%gen_cert_server_fqdn% >> %csr_config_file_name%

folgendermaßen angepasst werden:

In jedem Fall muss der Teil DNS:%gen_cert_server_short_name%, entfernt werden, damit keine kurzen Host-Namen mehr in die erzeugten CSRs aufgenommen werden.

Falls die VMware-Server IP-Adressen aus den für den privaten Gebrauch reservierten IP-Adressbereichen benutzen, so muss ebenfalls der Teil IP:%gen_cert_server_ip%, aus der Zeile entfernt werden, damit diese IP-Adressen nicht mehr in die erzeugten CSRs aufgenommen werden.

In letzterem Fall sieht die geänderte Zeile 33 im Skript generate-cdr.bat dann wie folgt aus:

echo subjectAltName = DNS:%gen_cert_server_fqdn% >> %csr_config_file_name%

(rkm, 23.11.2015)