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 [2014/03/03 12:15] – [Subject Alternative Names] semaanopensslcert [2023/01/10 15:44] – [Zertifikatskette bereitstellen] rwelte
Zeile 1: Zeile 1:
 ====== Serverzertifikat mit openSSL bearbeiten ====== ====== Serverzertifikat mit openSSL bearbeiten ======
  
-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. 
- 
-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 25: Zeile 16:
   * 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.uni-freiburg.de,OU=Rechenzentrum,O=Universitaet Freiburg,L=Freiburg,ST=Baden-Wuerttemberg,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,L=Freiburg,ST=Baden-Wuerttemberg,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.
  
Zeile 40: Zeile 30:
 <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 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
Zeile 69: Zeile 59:
 C                      = DE C                      = DE
 ST                     = Baden-Wuerttemberg ST                     = Baden-Wuerttemberg
-L                      = Freiburg +L                      = Freiburg im Breisgau 
-O                      = Universitaet Freiburg+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 
 </code> </code>
  
Zeile 82: Zeile 71:
 <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 90: Zeile 79:
 C                      = DE C                      = DE
 ST                     = Baden-Wuerttemberg ST                     = Baden-Wuerttemberg
-L                      = Freiburg +L                      = Freiburg im Breisgau 
-O                      = Universitaet Freiburg+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 ] [ v3_req ]
Zeile 116: 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 128: 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|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.pem**, **g_dfn_intermediatecert.pem** bzw. **g_unifrcacert.pem**. 
- 
-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.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" 
-...  
-</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}} 
  
QR-Code
QR-Code Einen CSR-Requests für ein Serverzertifikat mit openSSL erstellen (erstellt für aktuelle Seite)