Serverzertifikatrequest erzeugen (Linux)

Für das Erzeugen des Zertifikatrequests kann entweder das Paket »openssl« oder das Paket »gnutls« (ggf. inklusive »gnutls-utils«) verwendet werden, welche auf dem Server installiert und konfiguriert sein müssen. Auf Linux-Servern gehen Sie bitte wie folgt vor:

  • Melden Sie sich als User "root" am System an.
  • Erzeugen Sie einen privaten Schlüssel (Key) mit folgendem Befehl:

    (openssl)# openssl genrsa -out private.pem 4096

    (gnutls)# certtool -p --rsa --pkcs8 --empty-password --sec-param=medium --outfile private.pem

    Damit wird im aktuellen Verzeichnis eine Datei namens "private.pem" angelegt, die den privaten Schlüssel mit einer Länge von 4096 bit für den Server enthält. Wichtig: Bitte achten Sie unbedingt darauf, die Berechtigung der Datei "private.pem" so zu setzen, dass ausschließlich der User, dem das Zertifikat gehören soll, Zugriff darauf hat!
    Hinweis: Neben "RSA"-Keys sind auch "EC"-Keys möglich.
     
  • Erzeugen Sie nun die Request-Datei für die Beantragung des Zertifikats:
    Variante 1: Eingabe der Requestdaten über die Befehlszeile:

    (openssl)# openssl req -sha256 -key private.pem -new -out request.pem

    (gnutls)# certtool -q --load-privkey private.pem --empty-password --outfile request.pem

    Es wird aus dem eben angelegten privaten Schlüssel eine Datei "request.pem" erzeugt, die Sie für die Beantragung des Zertifikats benötigen.
    Bei der Erzeugung der Request-Datei werden Sie nach mehreren Informationen gefragt, die in die Datei und das Zertifikat aufgenommen werden. Antworten Sie bitte wie folgt (bitte genau die angegebene Schreibweise übernehmen!):
     
    • Country Name: DE
    • State or Province Name: Schleswig-Holstein
    • Locality Name (City): Luebeck
    • Organization Name: Universitaet zu Luebeck
    • Organizational Unit: Ihr Institutsname*
      *Anmerkung: Ab sofort ist das Feld "Organizational Unit" nicht mehr Bestandteil von Serverzertifikaten und kann daher leergelassen werden.
    • Common Name: Server-Name bzw. Website-Name, für den das Zertifikat ausgestellt werden soll, z.B. server1.xyz.uni-luebeck.de bzw. www.xyz.uni-luebeck.de (hat der Server weitere virtuelle DNS-Namen, die ebenfalls in das Zertifikat eingebunden werden sollen, können diese am besten über eine Datei request.cnf in den Request eingebunden werden, siehe dazu nächster Abschnitt "Variante 2")
    • Email-Address: Email-Adresse des Server-Administrators
    • Challenge Passwort: Lassen Sie dieses Feld bitte leer, ansonsten kann es sein, dass der Server bei jedem Start nach diesem Zertifikatpasswort fragt.
    • Optional Company Name: Leer lassen

    • zusätzlich gnutls:

    • DC: Leer lassen
    • UID: Leer lassen
    • Enter a dnsName of the subject of the certificate: Es werden solange neue Namen abgefragt, bis ein Name leer gelassen wird
    • URI: frei lassen
    • IP adress: frei lassen
    • Does the certificate belong to an authority? n
    • Will the certificate be used for signing? n
    • Will the certificate be used for encryption? n
    • Is this a TLS web client certificate? n
    • Is this a TLS server certificate? y
     
    Variante 2: Eingabe der Requestdaten über eine Datei:
    Erzeugen Sie eine Textdatei, z.B. mit dem Namen "request.cnf" und dem folgenden Inhalt:

    [req]
    distinguished_name     = ca_distinguished_name
    req_extensions = v3_req

    [ca_distinguished_name]
    countryName = Country Name (2 letter code)
    countryName_default = DE
    stateOrProvinceName = State or Province Name (full name)
    stateOrProvinceName_default = Schleswig-Holstein
    localityName = Locality Name (eg, city)
    localityName_default = Luebeck
    organizationName = Organization Name (eg, company)
    organizationName_default = Universitaet zu Luebeck
    commonName = Common Name (e.g. server FQDN or YOUR name)
    commonName_default = www.XYZ.uni-luebeck.de
    emailAddress = Email Address
    emailAddress_default = admin.emailadresse@uni-luebeck.de

    [v3_req]
    subjectAltName = @alt_names

    [alt_names]
    DNS.1 = www.XYZ.uni-luebeck.de
    DNS.2 = XYZ.uni-luebeck.de

    DNS.3 = ... usw.

    Der Vorteil dieser Methode ist, dass Sie in der Config-Datei beliebig viele DNS-Namen angeben können, die in das Zertifikat eingebunden werden sollen.
    Die Request-Datei unter Verwendung der obigen Config-Datei erstellen Sie dann mit dem folgenden Befehl:

    # openssl req -sha256 -key private.pem -new -out request.pem -config request.cnf -nodes

    Hinweis: Bei den einzelnen Feldern werden die in den Default-Einträgen der Datei angegebenen Werte angezeigt und durch Drücken von "Enter" in den Request übernommen.