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:

    Leave A Reply