Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Nächste ÜberarbeitungBeide Seiten der Revision
opensslcert [2010/02/10 10:08] bushopensslcert [2023/01/10 15:43] – [Zertifikat und privaten Schlüssel installieren] rwelte
Zeile 1: Zeile 1:
-====== Ein Server-Zertifikat mit openSSL bearbeiten ======+====== Serverzertifikat mit openSSL bearbeiten ====== 
 + 
 + 
 +Auf Linux-Systemen sollte openSSL grundsätzlich bereits installiert sein. 
 + 
 +Für Windows-Systeme können Sie das Programmpaket hier herunterladen:  
 +**[[http://www.slproweb.com/products/Win32OpenSSL.html]]** 
 + 
  
-Auf dieser Seite zeigen wir Ihnen, wie Sie mit openSSL ein Schlüsselpaar generieren, den 
-CSR erzeugen und schließlich das von der Uni-FR CA gelieferte Zertifikat in das Server- 
-System einbauen. 
  
 ===== Schlüsselpaar generieren ===== ===== Schlüsselpaar generieren =====
  
 Im vorliegenden Beispiel wollen wir folgendes voraussetzen: Im vorliegenden Beispiel wollen wir folgendes voraussetzen:
-  * Die Internet-Adresse des Servers sei server1.ruf.uni-freiburg.de+  * Die Internet-Adresse des Servers sei server1.uni-freiburg.de
   * Die Abteilung ist das Rechenzentum   * Die Abteilung ist das Rechenzentum
   * Der Schlüsselbund zur Aufbewahrung der eigenen Schlüssel sei /var/lib/.keystore\\ (unter Windows üblicherweise C:\Dokumente und Einstellungen\(Benutzername)\.keystore)   * Der Schlüsselbund zur Aufbewahrung der eigenen Schlüssel sei /var/lib/.keystore\\ (unter Windows üblicherweise C:\Dokumente und Einstellungen\(Benutzername)\.keystore)
-  * Der Schlüssel soll auf hohe Sicherheit (Länge 2048 Bit) eingestellt sein +  * Der Schlüssel soll auf hohe Sicherheit (Länge 4096 Bit) eingestellt sein
-  * Der Gültigkeitszeitraum wird auf die maximale von der Uni-FR CA akzeptierten Zeitdauer von 5 Jahren (1825 Tage) konfiguriert+
 \\  \\ 
 Es soll hier ein Schlüsselpaar inclusive einem selbstsignierten Zertifikat mit folgendem eindeutigen Name erzeugt werden: Es soll hier ein Schlüsselpaar inclusive einem selbstsignierten Zertifikat mit folgendem eindeutigen Name erzeugt werden:
-<code>DN: CN=server1.ruf.uni-freiburg.de,OU=Rechenzentrum,O=Universitaet Freiburg,C=DE</code>+<code>DN: CN=server1.uni-freiburg.de,OU=Rechenzentrum,O=Albert-Ludwigs-Universitaet Freiburg,L=Freiburg im Breisgau,ST=Baden-Wuerttemberg,C=DE</code>
  
-Für die Uni-FR CA sind die Komponenten O und C obligatorisch: **O=Universitaet Freiburg,C=DE**.\\ +Für die Uni-FR CA sind die Komponenten O und C obligatorisch: **O=Albert-Ludwigs-Universitaet Freiburg,L=Freiburg im Breisgau,ST=Baden-Wuerttemberg,C=DE**.\\ 
 Das Element OU kann auch mehrfach auftreten, falls Sie z.B. verschiedene Unterabteilungen im DN nicht nur durch den CN des Servers kenntlich machen wollen. Das Element OU kann auch mehrfach auftreten, falls Sie z.B. verschiedene Unterabteilungen im DN nicht nur durch den CN des Servers kenntlich machen wollen.
  
  
 Das OpenSSL-Kommando zur Herstellung eines Schlüsselpaares lautet folgendermaßen:\\ Das OpenSSL-Kommando zur Herstellung eines Schlüsselpaares lautet folgendermaßen:\\
-(Die Benutzer-Eingabezeilen sind in den Beispielen mit dem System-Promp '$' gekennzeichnet)+(Die Benutzer-Eingabezeilen sind in den Beispielen mit dem System-Prompt <html>'$'</html> gekennzeichnet)
  
 <code> <code>
 ohne Passwortschutz: ohne Passwortschutz:
-$ openssl genrsa  -out  /var/lib/.keystore 2048+$ openssl genrsa  -out  /var/lib/.keystore 4096
  
 mit Passwortschutz: mit Passwortschutz:
-$ openssl genrsa  -des3 -out  /var/lib/.keystore 2048+$ openssl genrsa  -des3 -out  /var/lib/.keystore 4096
 enter des-ede3-cbc encryption password: ***** enter des-ede3-cbc encryption password: *****
 Verifying - enter des-ede3-cbc encryption password: ***** Verifying - enter des-ede3-cbc encryption password: *****
Zeile 48: Zeile 52:
 <code> <code>
 [ req ] [ req ]
-default_bits           2048+default_bits           4096
 distinguished_name     = req_distinguished_name distinguished_name     = req_distinguished_name
 prompt                 = no prompt                 = no
  
 +[ req_distinguished_name ]
 +C                      = DE
 +ST                     = Baden-Wuerttemberg
 +L                      = Freiburg im Breisgau
 +O                      = Albert-Ludwigs-Universitaet Freiburg
 +OU                     = Rechenzentrum
 +CN                     = server1.uni-freiburg.de
 +</code>
 +
 +==== Subject Alternative Names ====
 +
 +Falls Sie zusätzliche Hostnamen (Subject Alterantive Names, SANs) als Alternativen in das Zertifikat aufgenommen haben wollen, müssen Sie die Konfigurationsdatei in der folgenden Art erweitern:
 +
 +<code>
 +[ req ]
 +default_bits           = 4096
 +distinguished_name     = req_distinguished_name
 +prompt                 = no
 +req_extensions         = v3_req
  
 [ req_distinguished_name ] [ req_distinguished_name ]
 C                      = DE C                      = DE
-O                      = Universitaet Freiburg+ST                     = Baden-Wuerttemberg 
 +L                      = Freiburg im Breisgau 
 +O                      = Albert-Ludwigs-Universitaet Freiburg
 OU                     = Rechenzentrum OU                     = Rechenzentrum
 CN                     = server1.uni-freiburg.de CN                     = server1.uni-freiburg.de
-emailAddress           admin@server1.uni-freiburg.de+ 
 +[ v3_req ] 
 +subjectAltName         = @alt_names 
 + 
 +[ alt_names ] 
 +DNS.1                  = server1.uni-freiburg.de 
 +DNS.2                  = alt1.uni-freiburg.de 
 +DNS.3                  = alt2.uni-freiburg.de 
 +...
 </code> </code>
 +
 +Bitte beachten Sie, dass der Common Name (CN) aus dem Abschnitt [req_distinguished_name] nochmals als SAN im Abschnitt [alt_names] aufgeführt wird, da anderenfalls einige Browser mit der Auswertung der entsprechenden Zertifikatsfelder Probleme haben.
 +
 +
 +==== Erzeugen, speichern, überprüfen ====
  
 In unserem Beispiel soll diese Datei den Namen **req_config** erhalten. In unserem Beispiel soll diese Datei den Namen **req_config** erhalten.
Zeile 66: Zeile 104:
  
 <code> <code>
-$ openssl req -new -days 1825 -key /var/lib/.keystore -out server1.csr -config req_config+$ openssl req -new -sha256 -key /var/lib/.keystore -out server1.csr -config req_config
 </code> </code>
  
 Damit erzeugen Sie die **Request-Datei** unter dem Namen **server1.csr** unter Verwendung der zuvor erzeugten Konfigurationsdatei **req_config**. Damit erzeugen Sie die **Request-Datei** unter dem Namen **server1.csr** unter Verwendung der zuvor erzeugten Konfigurationsdatei **req_config**.
 +Bei Windows XP funktioniert dieses Verfahren nicht!
  
 Die Request-Datei geben Sie zur Kontrolle als lesbaren Text mit folgendem Kommando aus: Die Request-Datei geben Sie zur Kontrolle als lesbaren Text mit folgendem Kommando aus:
Zeile 78: Zeile 116:
 </code> </code>
  
-Die Datei server1.csr können Sie im Web-Interface der Uni-FR CA 
  
-  * **https://pki.pca.dfn.de/uni-freiburg-ca/pub** 
- 
-direkt über die Schaltfläche **Durchsuchen** hochladen lassen. 
- 
- 
-Das Antragsverfahren mit Hilfe des Web-Interface der Uni-FR CA ist beschrieben in dem Dokument 
- 
-  * **[[Serverzertifikat beantragen]]** 
  
 \\ \\
  
-===== Zertifikat und privaten Schlüssel installieren ===== 
  
-Sobald Sie das Serverzertifikat von der Uni-FR CA per Mail erhalten haben, speichern Sie die PEM-formatierte Datei des Attachements ab, z.B. unter dem Namen **server1.pem**.+===== Zertifikatskette bereitstellen =====
  
-Außerdem speichern Sie das **[[https://pki.pca.dfn.de/uni-freiburg-ca/pub/cacert/g_rootcert.crt|Zertifikat der Wurzelzertifizierungsstelle]]** der Deutschen Telekomdas **[[https://pki.pca.dfn.de/uni-freiburg-ca/pub/cacert/g_intermediatecacert.crt|Zwischenzertifikat der DFN-PKI]]** sowie das **[[https://pki.pca.dfn.de/uni-freiburg-ca/pub/cacert/g_cacert.crt|Zertifikat der Uni-FR CA]]** als PEM-Datei ab. Klicken Sie dazu mit der rechten Maustaste auf die Links und wählen Sie die Funktion "Ziel speichern unter...". Die heruntergeladenen Dateien werden gespeichert unter den Namen **g_deutsche-telekom-root-ca-2.pem**, **g_dfn_intermediatecert.pem** bzw. **g_unifrcacert.pem**.+Wenn der Server die Zertifikatskette (SSLCertificateChainFile) nicht zum Client überträgtist man gezwungen, dort die Zwischenzertifikate manuell zu importierenEs ist also zu empfehlen, seinen "Kunden" diesen Service zu bieten.
  
-Die Installation des Zertifikates hängt von den Anforderungen des Dienstes ab, für den es beantragt wurde.+In der SSL-Konfigurationsdatei von Apache findet man dazu den Parameter "SSLCertificateChainFile".
  
-Im vorliegenden **Beispiel** soll gezeigt werdenwie das Zertifikat für **Jakarta Tomcat** zugänglich gemacht wird. +Speichern Sie die Zertifikatskettedie aus drei aneinander gehängten PEM-Dateien besteht an einen Platz Ihrer Wahl und lassen Sie den Parameter darauf zeigen. Erhältlich ist das **[[https://pki.pca.dfn.de/uni-freiburg-ca/pub/cacert/chain.txt|ChainFile]]** auf den DFN-Webseiten der Uni FR CA.
- +
-Als erstes importieren Sie die drei Zertifikate der Zertifikatskette in die keystore-Datei:+
  
 <code> <code>
-ohne Passwortschutz: 
-$ cat g_deutsche-telekom-root-ca-2.pem >>/var/lib/.keystore 
-$ cat g_dfn_intermediatecert.pem >>/var/lib/.keystore 
-$ cat g_unifrcacert.pem >>/var/lib/.keystore 
-$ cat server1.pem >>/var/lib/.keystore 
- 
-mit Passwortschutz (bei bisher ungeschütztem .keystore): 
-$ cat g_deutsche-telekom-root-ca-2.pem >>/var/lib/.keystore 
-$ cat g_dfn_intermediatecert.pem >>/var/lib/.keystore 
-$ cat g_unifrcacert.pem >>/var/lib/.keystore 
-$ cat server1.pem >>/var/lib/.keystore 
-$ cat /var/lib/.keystore | openssl enc -e -des3 -out /var/lib/.keystore 
-enter des-ede3-cbc encryption password: ***** 
-Verifying - enter des-ede3-cbc encryption password: ***** 
- 
-mit Passwortschutz (bei bisher geschütztem .keystore): 
-$ openssl enc -d -des3 -in /var/lib/.keystore -out tempstore 
-enter des-ede3-cbc decryption password: ***** 
-$ cat g_deutsche-telekom-root-ca-2.pem >>/var/lib/.keystore 
-$ cat g_dfn_intermediatecert.pem >>/var/lib/.keystore 
-$ cat g_unifrcacert.pem >>/var/lib/.keystore 
-$ cat server1.pem >>tempstore 
-$ openssl enc -e -des3 -in tempstore -out /var/lib/.keystore 
-enter des-ede3-cbc encryption password: ***** 
-Verifying - enter des-ede3-cbc encryption password: ***** 
-$ rm tempstore 
-</code> 
- 
-Nun teilen Sie **tomcat** in der Datei **server.xml** im **conf**-Verzeichnis mit, wo das Server-Zertifikat zu finden ist. 
-Falls Sie den Zertifikatsspeicher mit einem Passwort geschützt haben, müssen Sie dieses hier im Klartext (!) eingeben. 
- 
-<code> 
-... 
-    <!-- Define a SSL HTTP/1.1 Connector on port 443 --> 
-    <Connector port="443" maxHttpHeaderSize="8192" 
-               maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
-               enableLookups="false" disableUploadTimeout="true" 
-               acceptCount="100" scheme="https" secure="true" 
-               keystoreFile="/var/lib/.keystore" 
-               keystorePassword="******" 
-               clientAuth="false" sslProtocol="TLS" /> 
-... 
-</code> 
-Das keystore-Password wurde mit '*' unkenntlich gemacht.\\ 
-In diesem Fall ist also die Schlüsseldatei mit einem Passwort geschützt.\\ 
-**Sie müssen aber nun dafür sorgen, dass die Datei server.xml mit dem Klartextpasswort nicht von unbefugten gelesen werden kann.** 
-\\ 
-Falls Sie den **Apache Webserver** mit mod_ssl einsetzen, tragen Sie die Keystore-Datei wie sie im obigen Beispiel hergestellt wurde, nach folgendem Schema in die Konfigurationsdatei **httpd-ssl.conf** ein: 
- 
-<code> 
-... 
-#   Server Certificate: 
-#   Point SSLCertificateFile at a PEM encoded certificate.  If 
-#   the certificate is encrypted, then you will be prompted for a 
-#   pass phrase.  Note that a kill -HUP will prompt again.  Keep 
-#   in mind that if you have both an RSA and a DSA certificate you 
-#   can configure both in parallel (to also allow the use of DSA 
-#   ciphers, etc.) 
-SSLCertificateFile "/var/lib/cert-from-ca.pem" 
- 
-#   Server Private Key: 
-#   If the key is not combined with the certificate, use this 
-#   directive to point at the key file.  Keep in mind that if 
-#   you've both a RSA and a DSA private key you can configure 
-#   both in parallel (to also allow the use of DSA ciphers, etc.) 
-SSLCertificateKeyFile "/var/lib/.keystore" 
- 
 #   Server Certificate Chain: #   Server Certificate Chain:
 #   Point SSLCertificateChainFile at a file containing the #   Point SSLCertificateChainFile at a file containing the
Zeile 178: Zeile 137:
 #   when the CA certificates are directly appended to the server #   when the CA certificates are directly appended to the server
 #   certificate for convinience. #   certificate for convinience.
-SSLCertificateChainFile "/var/lib/.keystore"+SSLCertificateChainFile "/var/lib/chain.pem"
 ...  ... 
 </code> </code>
- 
-Wenn Sie die Zertifikatskette (SSLCertificateChainFile) nicht ausgeben, sind die Clients gezwungen, die Zwischenzertifikate manuell zu importieren. 
-Andernfalls genügt es, wenn der Client-Speicher für vertrauenswürdige Zertifizierungsstellen das Wurzel-Zertifikat in der richtigen Vertrauensstellung enthält. 
- 
  
  
 Normalerweise müssen Sie die Anwendungen anschließend neu starten, damit die Konfiguration wirksam wird und das Zertifikat verwendet werden kann. Normalerweise müssen Sie die Anwendungen anschließend neu starten, damit die Konfiguration wirksam wird und das Zertifikat verwendet werden kann.
  
 +\\
  
  
-\\  
-\\  
-\\  
- 
-{{tag>zertifikate sicherheit openssl}} 
QR-Code
QR-Code Einen CSR-Requests für ein Serverzertifikat mit openSSL erstellen (erstellt für aktuelle Seite)