Server-Zertikate für mehrere virtuelle Hosts mit OpenSSL

Das Problem liegt darin, daß pro IP-Adresse nur ein Zertifikat möglich ist. Normalerweise steht im Server-Zertifikat aber nur ein Rechnername. Bei abweichenden Namen virtueller Hosts würde der Web-Browser unnötigerweise eine Warnung ausgeben.

Es existieren mehrere mögliche Lösungsansätze, wobei die Variante mit einem Common Name und mehreren Subject Alt Names von Browsern wohl am besten unterstützt wird.

An dieser Stelle werde ich die Vorgehensweise beschreiben, wenn man ein selbstsigniertes Zertifikat basierend auf einem eigenen CA-Zertifikat ausstellt.

Die Alternativnamen trägt man am besten in die Abschnitte usr_cert und v3_ca der OpenSSL-Konfigurationsdatei in der Form:

subjectAltName=DNS:domain.tld, DNS:www.domain.tld, DNS:test.domain.tld, DNS:foobar.domain.tld

ein. Wichtig ist, daß der Common Name (z. B. domain.tld) an dieser Stelle nochmal wiederholt wird, auch wenn’s erstmal überflüssig scheint. Andernfalls beschwert sich z. B. Firefox über die fehlende Namensgleichheit zwischen dem angeforderten Rechnernamen und dem vermeintlichen Rechnernamen des Zertifikats.

Erzeugung der Schlüssel und Zertifikate

  1. CA-Schlüssel erzeugen:

    openssl genrsa -des3 -out ca.key 2048
  2. CA-Zertifikat erzeugen:

    openssl req -new -x509 -days 1000 -key ca.key -out ca.crt
  3. Server-Schlüssel erzeugen:

    openssl genrsa -out server.key 2048
  4. Server-Zertifikatsanforderung erzeugen:

    openssl req -new -key server.key -out server.csr
  5. Server-Zertifikat erzeugen:

    openssl ca -policy policy_anything -in server.csr -out server.crt

    Alternativ:

    openssl ca -name ServerCA -in server.csr -out server.crt

Schritt 3–5 für jeden Server wiederholen.

  • DH-Parameter erzeugen (Nutzen?):

    openssl dhparam -out dh2048.pem 2048

Selbstsigniertes Zertifikat mit privatem Schlüssel in einem

openssl req -new -x509 -days 365 -nodes -config server.cnf -out server.pem -keyout server.pem

Wichtige Parameter:

-x509
selbstsigniert
-nodes
ohne Paßwort