Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
opensslcert [2016/11/29 10:08] – [Zertifikat und privaten Schlüssel installieren] af1055opensslcert [2023/01/13 12:44] (aktuell) nw75
Zeile 1: Zeile 1:
-====== Serverzertifikat mit openSSL bearbeiten ======+====== Einen CSR-Requests für ein Serverzertifikat mit openSSL erstellen ======
  
-Auf dieser Seite zeigen wir Ihnen, wie Sie mit openSSL ein Schlüsselpaar generieren, den 
-CSR (Certificate Signing Request) erzeugen und schließlich das von der Uni-FR CA gelieferte Zertifikat in das Server- 
-System einbauen. 
- 
-Hintergrundinformationen dazu finden Sie in dem Dokument: **[[serverzertifikat|Serverzertifikat beantragen]]**. 
- 
-Die Anleitung der DFN PKI: **[[https://www.pki.dfn.de/fileadmin/PKI/anleitungen/Anleitung_Nutzung_OpenSSL.pdf|Anleitung zur Nutzung von OpenSSL in der DFN-PKI (PDF-Datei)]]** 
- 
-Die Anleitung des DFN CERT: **[[http://www.dfn-cert.de/informationen/themen/verschluesselung_und_pki/openssl-kurzreferenz.html|OpenSSL-Kurzreferenz]]** 
  
 Auf Linux-Systemen sollte openSSL grundsätzlich bereits installiert sein. Auf Linux-Systemen sollte openSSL grundsätzlich bereits installiert sein.
Zeile 15: Zeile 6:
 Für Windows-Systeme können Sie das Programmpaket hier herunterladen:  Für Windows-Systeme können Sie das Programmpaket hier herunterladen: 
 **[[http://www.slproweb.com/products/Win32OpenSSL.html]]** **[[http://www.slproweb.com/products/Win32OpenSSL.html]]**
- 
  
  
Zeile 25: Zeile 15:
   * 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:
Zeile 40: Zeile 29:
 <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 62: Zeile 51:
 <code> <code>
 [ req ] [ req ]
-default_bits           2048+default_bits           4096
 distinguished_name     = req_distinguished_name distinguished_name     = req_distinguished_name
 prompt                 = no prompt                 = no
Zeile 73: Zeile 62:
 OU                     = Rechenzentrum OU                     = Rechenzentrum
 CN                     = server1.uni-freiburg.de CN                     = server1.uni-freiburg.de
-emailAddress           = admin@server1.uni-freiburg.de 
 </code> </code>
  
Zeile 82: Zeile 70:
 <code> <code>
 [ req ] [ req ]
-default_bits           2048+default_bits           4096
 distinguished_name     = req_distinguished_name distinguished_name     = req_distinguished_name
 prompt                 = no prompt                 = no
Zeile 94: Zeile 82:
 OU                     = Rechenzentrum OU                     = Rechenzentrum
 CN                     = server1.uni-freiburg.de CN                     = server1.uni-freiburg.de
-emailAddress           = admin@server1.uni-freiburg.de 
  
 [ v3_req ] [ v3_req ]
Zeile 116: Zeile 103:
  
 <code> <code>
-$ openssl req -new -sha256 -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>
  
Zeile 128: Zeile 115:
 </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|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**. 
- 
-Außerdem speichern Sie das **[[https://pki.pca.dfn.de/uni-freiburg-ca/pub/cacert/g_rootcert.crt|Zertifikat der Wurzelzertifizierungsstelle]]** der Deutschen Telekom, das **[[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.crt**, **g_dfn_intermediatecert.crt** bzw. **g_unifrcacert.crt**. 
- 
-Die Installation des Zertifikates hängt von den Anforderungen des Dienstes ab, für den es beantragt wurde. 
- 
-Im vorliegenden **Beispiel** soll gezeigt werden, wie das Zertifikat für **Jakarta Tomcat** zugänglich gemacht wird. 
- 
-Als erstes importieren Sie die drei Zertifikate der Zertifikatskette in die keystore-Datei: 
- 
-<code> 
-ohne Passwortschutz: 
-$ cat g_deutsche-telekom-root-ca-2.crt >>/var/lib/.keystore 
-$ cat g_dfn_intermediatecert.crt >>/var/lib/.keystore 
-$ cat g_unifrcacert.crt >>/var/lib/.keystore 
-$ cat server1.pem >>/var/lib/.keystore 
- 
-mit Passwortschutz (bei bisher ungeschütztem .keystore): 
-$ cat g_deutsche-telekom-root-ca-2.crt >>/var/lib/.keystore 
-$ cat g_dfn_intermediatecert.crt >>/var/lib/.keystore 
-$ cat g_unifrcacert.crt >>/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.crt >>/var/lib/.keystore 
-$ cat g_dfn_intermediatecert.crt >>/var/lib/.keystore 
-$ cat g_unifrcacert.crt >>/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> 
-<note warning>Die Zertifikate können in einem nicht korrektem Encoding vorliege. Dies führt im Apachen zum AH02561-Fehler und einem nicht aufstarten, in diesen Fall sollten Sie die .crts umkodieren <code>openssl x509 -in g_deutsche-telekom-root-ca-2.crt -inform DER -out root.crt 
- </code></note> 
-<note tip>Falls das Zertifikat unter Android nicht funktioniert, kann es an der Reihenfolge des cat-Befehles liegen. Versuchen Sie <code>cat server1.pem g_unifrcacert.crt g_dfn_intermediatecert.crt g_deutsche-telekom-root-ca-2.crt >full.crt</code></note> 
- 
-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" 
-...  
-</code> 
- 
-\\ 
- 
-===== Zertifikatskette bereitstellen ===== 
- 
-Wenn der Server die Zertifikatskette (SSLCertificateChainFile) nicht zum Client überträgt, ist man gezwungen, dort die Zwischenzertifikate manuell zu importieren. Es ist also zu empfehlen, seinen "Kunden" diesen Service zu bieten. 
- 
-In der SSL-Konfigurationsdatei von Apache findet man dazu den Parameter "SSLCertificateChainFile". 
- 
-Speichern Sie die Zertifikatskette, die 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. 
- 
-<code> 
-#   Server Certificate Chain: 
-#   Point SSLCertificateChainFile at a file containing the 
-#   concatenation of PEM encoded CA certificates which form the 
-#   certificate chain for the server certificate. Alternatively 
-#   the referenced file can be the same as SSLCertificateFile 
-#   when the CA certificates are directly appended to the server 
-#   certificate for convinience. 
-SSLCertificateChainFile "/var/lib/chain.pem" 
-...  
-</code> 
- 
- 
-Normalerweise müssen Sie die Anwendungen anschließend neu starten, damit die Konfiguration wirksam wird und das Zertifikat verwendet werden kann. 
- 
-\\ 
- 
-===== Literatur ===== 
- 
-  * http://www.dfn-cert.de/informationen/themen/verschluesselung_und_pki/openssl-kurzreferenz.html 
-  * http://wiki.cacert.org/FAQ/subjectAltName 
-  * http://apetec.com/support/GenerateSAN-CSR.htm 
-  * http://wiki.gwdg.de/index.php/Erzeugung_von_Zertifikatantraegen_mit_Subject_Alternative_Name_fuer_virtuelle_Webserver_auf_Basis_von_OpenSSL_fuer_die_DFN-PKI\\ (An die lokalen Gegebenheiten anpassen!) 
-  * http://apetec.com/support/GenerateCSR.htm\\ (Für IIS 7 Microsoft Windows Server 2008) 
- 
-\\  
-\\  
-\\  
  
-{{tag>zertifikate sicherheit openssl}}+{{tag>zertifikate sicherheit}}
  
QR-Code
QR-Code Einen CSR-Requests für ein Serverzertifikat mit openSSL erstellen (erstellt für aktuelle Seite)