SSL-Server konfigurieren

Linux (am Beispiel Apache-Server)

Wenn Sie ein Server-Zertifkat beantragt und erhalten haben, müssen Sie noch ihren Apache-Webserver passend konfigurieren.
  • Der erzeugte private (geheime) Schlüssel ist noch durch ein Passwort geschützt. In der Regel ist das aber nicht gewünscht, weil sonst der Webserver diesen beim Starten nicht ohne Eingabe des Passworts lesen kann. Das bedeutet beim Starten des Webservers ist immer ein manueller Eingriff erforderlich. Um den privaten Schlüssel permanent zu entschlüsseln, geben Sie ein

    openssl rsa -passin pass:geheim -in private_key_enc.pem -out private_key.pem
    chmod 400 private_key.pem

    Damit wird der private Schlüssel für jeden, der die Datei private_key.pem lesen kann, sichtbar. Achten Sie deshalb auf die Dateirechte. Normalerweise sollte es reichen, wenn nur root die Datei lesen kann. Der Apache liest die Datei bevor er sein Root-Rechte aufgibt.

  • Damit die Webbrowser das neue Zertifikat auf die im Webbrowser importierten Wurzelzertifikate zurückführen können, müssen Sie den Webbrowsern die gesamte Zertifikatskette zur Verfügung stellen. Die Zertifikatskette wird vom Apache im PEM-Format benötigt. Entnehmen Sie die Zertifikatskette der E-Mail mit Ihrem Zertifikat unter "as Root/Intermediate(s) only, PEM encoded" und das eigentliche Zertifikat unter "as Certificate only, PEM encoded".
  • Für den Apache Webserver müssen in der httpd.conf die Direktiven

    SSLEngine on
    SSLCertificateFile /etc/ssl/tuhh/cert.pem
    SSLCertificateKeyFile /etc/ssl/tuhh/private_key.pem
    SSLCertificateChainFile /etc/ssl/tuhh/cert-chain.pem

    gesetzt werden.
    Unter Debian Derivaten (Debian, Ubuntu, ...) bietet sich ein Unterordner in /etc/ssl/ an.
    Unter Redhat Derivaten (Redhat, Alma, ...) bietet sich ein Unterordner in /etc/pki/tls/ an.
    sudo mkdir -p /etc/ssl/tuhh/
    sudo chmod 700 /etc/ssl/tuhh/
    sudo chown root:root /etc/ssl/tuhh/
            
    Achten Sie darauf, dass nur root die Datei private_key.pem lesen kann. Insbesondere darf der laufende Apache (wenn er in einem anderen Account läuft) die Datei nicht lesen können. Sonst besteht die Gefahr, dass z.B. der private Schlüssel über unsichere CGI-Scripte ausgelesen werden kann.

Linux (am Beispiel Tomcat-Server)

Wenn Sie ein Server-Zertifkat beantragt und erhalten haben, müssen Sie noch ihren Tomcat-Webserver passend konfigurieren. Damit die Webbrowser das neue Zertifikat auf die im Webbrowser importierten Wurzelzertifikate zurückführen können, müssen Sie den Webbrowsern die gesamte Zertifikatskette zur Verfügung stellen.
  • Entnehmen Sie die Zertifikatskette der E-Mail mit Ihrem Zertifikat unter "as Root/Intermediate(s) only, PEM encoded" und das eigentliche Zertifikat unter "as Certificate only, PEM encoded".
  • Aus der Zertifikatskette chain.txt, dem signierten Tomcat-Server-Zertifikat cert-<nummer>.pem und dem private_key_enc.pem wird nun ein Keystore im PKCS12 Format server-cert.pkcs12 erzeugt:
    openssl pkcs12 -export -chain -CAfile chain.txt -in cert-<nummer>.pem -inkey private_key_enc.pem -out server-cert.pkcs12 -name tomcat-server -passout pass:changeit
  • Dies ist nur eine einzige Kommando-Zeile, Umbrüche durch den Webserver müssen beseitig werden. Der Name tomcat-server sollte dabei der Fully Qualified Domain Name (FQDN) und das Passwort changeit zum Schutz des Keystore gesetzt werden.
  • Diese server-cert.pkcs12 Ausgabedatei kann nun als .keystore im HOME-Verzeichnis des Tomcat benutzt werden. (Falls der Server als root läuft also als mv server-cert.pkcs12 /root/.keystore.)
  • Der Server muss diese Änderungen noch in /conf/server.xml im Installationsverzeichnis des Tomcat eingestellt bekommen. Dies erfordert das Einkommentieren/Erstellen dieses Blockes:
    <!-- Define a SSL HTTP/1.1 Connector on port 8443 -->
    <Connector port="443" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" disableUploadTimeout="true
    acceptCount="100" scheme="https" secure="true" keystoreType="PKCS12"
    clientAuth="false" sslProtocol="TLS" keystoreFile="/root/.keystore"
    keystorePass="changeit" />

    Wichtig ist dabei die Anpassung des Connector port="443" sowie die explizite Nennung des Formates keystoreType="PKCS12". Das Passwort wird benötigt, damit der Tomcat-Server das Zertifikat aus dem geschützen Keystore beim Starten laden kann.

  • Der Tomcat muss neu gestartet werden, damit die Änderungen übernommen werden.

Windows-Server (am Beispiel IIS)

Wenn Sie ein Server-Zertifkat beantragt und erhalten haben, müssen Sie noch alle nötigen Zertifikate und Schlüssel in den Zertifikatsspeicher des Computerkonto importieren und danach den IIS-Webserver entsprechend konfigurieren.
  • Um den Zertifikatsspeicher des Computerkonto zu bearbeiten, öffnen Sie eine Management-Konsole und fügen Sie das Snap-In Zertifikate für das Computerkonto hinzu:
    Screenshots: Managementkonsole öffnen Managementkonsole Snap-In hinzufügen Managementkonsole Snap-In Zertifikate Managementkonsole Zertifikate für Computerkonto
  • Danach müssen Sie die CA-Zertifikate importieren (rechter Mausklick!)

    • Das Wurzelzertifikat wird unter Vertraute Herausgeber importiert:

      Screenshots: DFN-Verein PCA Classic importieren

    • Das Zertifikat wird importiert unter Vertrauenswürdige Stammzertifizierungsstellen, damit der Webserver, die gesamte Zertifikatskette liefern kann.

      Screenshots: Zertifikat TUHH CA importieren

  • Bei Ausstellung eines Zertifikats erhalten Sie eine E-Mail mit dem neuen Zertifikat im PEM-Format. Kopieren Sie aus der Mail alle Zeilen zwischen den Trennzeilen -----BEGIN CERTIFICATE----- und -----END CERTIFICATE----- inklusive dieser Trennzeilen in die Datei cert.pem. Nun muss aus dem privaten Schlüssel private_key_enc.pem und dem neuen Zertifikat cert.pem des Webservers eine sogenannte PKCS12-Datei gebaut werden, damit Windows nicht nur das Zertifikat sondern auch den geheimen, privaten Schlüssel importieren kann (für die Übersichtlichkeit sind hier Zeilenumbrüche eingefügt):

    openssl pkcs12
    
      -export
      -passin pass:geheim
      -passout pass:geheim2
      -inkey private_key_enc.pem
      -in cert.pem
      -out winsslcer.p12
           

    Darin ist geheim2 das Export/Import-Passwort, dass sie später beim Importieren eingeben müssen. geheim ist das Passwort, dass Sie beim Erzeugen des Zertifikatsantrages eingegeben haben. Die PKCS12-Datei winsslcer.p12 enthält nun den geheimen, privaten Schlüssel und das neue Zertifikat des Webservers in einem Format, das Windows verarbeiten kann.

  • Diese neu erzeugte Datei winsslcer.p12 importieren Sie unter Eigene Zertifikate für den lokalen Computer. Das Passwort, dass Sie eingeben müssen, ist das zuvor vereinbarte Export/Import-Passwort (in diesem Beispiel geheim2):

    Screenshots: Eigenes Zertifikat importieren Eigenes Zertifikat importieren IIS Zertifikatskette

  • Im letzten Schritt muss noch der IIS so konfiguriert werden, dass dieser das neue Zertifikat verwendet:

    Screenshots: IIS Konfiguration starten IIS Eigenschaften IIS Serverzertifikat IIS Zertifikat Assistent IIS Verfügbare Zertifikate IIS Sichere Kommunikation IIS Neustart