Linux: Apache Zertifikat über Windows CA erstellen

0

Um ein Zertifikat beantragen zu können, muss ein privater Schlüssel sowie ein "certificate signing request" erstellt werden.

openssl req -new -newkey rsa:2048 -nodes -out ServerXYZ.csr -keyout ServerXYZ.key -subj /C=DE/L=Stadt/O=Abteilung/CN=ServerXYZ.domain.tld/emailAddress=user@domain.com

Anschließend existieren zwei Dateien. Die Datei ServerXYZ.key enthält den privaten Schlüssel. Die Datei ServerXYZ.csr enthält die Zertifikatsanforderung. Der Inhalt der ServerXYZ.csr Datei wird nun kopiert und über die Webseite der Windows CA (https://server/certsrv) unter [Request a certificate] – [Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file, or submit a renewal request by using a base-64-encoded PKCS #7 file] eingefügt und abgeschickt.

Anschließend kann das erstellte Zertifikate herunter geladen werden. Dies muss im DER Format erfolgen. Nun kann das Zertifikat im DER Format in das PEM Format konvertiert werden.

openssl x509 -in ServerXYZ_derformat.cer -inform DER -out ServerXYZ.pem -outform pem

In der Konfigurationsdatei des Apache Webservers können nun das erhaltene Zertifikat sowie der private Schlüssel angegeben werden.

        SSLCertificateFile /etc/apache2/ssl.key/ServerXYZ.pem
        SSLCertificateKeyFile /etc/apache2/ssl.key/ServerXYZ.key

SAN (Subject Alternative Name)

Da ein Server nicht nur über den direkten Hostnamen "ServerXYZ, sondern unter Umständen auch vollqualifiziert über "ServerXYZ.domain.tld" aufgerufen wird, ist es notwendig, im späteren Zertifikat unter "Alternative Antragstellername" alle diese Hostnamen aufzulisten. Um das zu ermöglichen, ist es notwendig, in der openssl.cnf req_extenstion auf v3_req zu setzten sowie im Abschnitt [ v3_req] die Zeile "subjectAltName = @alt_names"  am Ende zu ergänzen.

req_extensions = v3_req

[ v3_req ]
# Extensions to add to a certificate request
[...]
subjectAltName = @alt_names

Nun muss noch der Abschnitt [ alt_names ] mit den alternativen Hostnamen hinzugefügt werden:

[alt_names]DNS.1 = ServerXYZ
DNS.2 = ServerXYZ.domain.tld
DNS.3 = ServerAlias
DNS.4 = ServerAlias.domain.tld

Nun kann das Zertifikat ausgestellt werden. Unter "Common Name" ist weiterhin der Hostname des Servers einzutragen.

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

Um zu prüfen, ob die alterantiven Hostname auch mit verarbeitet wurden, kann man sich den "certificate signing request" noch mal anschauen.

openssl req -noout -text -in serverxyz.csr
[...]
        Requested Extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
            X509v3 Subject Alternative Name:
                DNS:ServerXYZ, DNS:ServerXYZ.domain.tld, DNS:ServerAlias, DNS:ServerAlias.domain.tld

Links:

Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell im Projektmanagement tätig.

Antworten