Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi2:ssl

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
Letzte Überarbeitung Beide Seiten, nächste Überarbeitung
lpi2:ssl [2018/08/10 10:48]
ingo_wichmann
lpi2:ssl [2020/03/04 10:12]
127.0.0.1 Externe Bearbeitung
Zeile 1: Zeile 1:
 +TODO: Lösung auf Basis von CFSSL, Boulder oder Consul evaluieren (( https://​www.heise.de/​select/​ix/​2019/​1/​1545992707007070 ))
 +
 +====== Links ======
 +  * [[https://​crt.sh|Log aller ausgestellten Zertifikate]]
 +
 ====== OpenSSL ====== ====== OpenSSL ======
 ===== Diffie Hellman Schlüsselaustausch vorbereiten ===== ===== Diffie Hellman Schlüsselaustausch vorbereiten =====
 DH-Parameter erzeugen: ((https://​bettercrypto.org empfiehlt 4096 Bit)) DH-Parameter erzeugen: ((https://​bettercrypto.org empfiehlt 4096 Bit))
-  openssl dhparam -out /​etc/​ssl/​dhparams.pem+  openssl dhparam ​-2 -out /​etc/​ssl/​dhparams.pem
  
 DH-Parameter ansehen: DH-Parameter ansehen:
   openssl dhparam -text -in /​etc/​ssl/​dhparams.pem   openssl dhparam -text -in /​etc/​ssl/​dhparams.pem
  
-Aufgabe: welche Bitlänge haben die Diffie Hellman Parameter?+Aufgabe: ​ 
 +  * welche Bitlänge haben die Diffie Hellman Parameter?
  
 +Doku:
 +  * https://​blog.zeit.de/​mathe/​allgemein/​daten-verschluesselung-mathe/​
 +  * https://​weakdh.org/​sysadmin.html
 ===== Selbstsignierte Server Zertifikate bauen ===== ===== Selbstsignierte Server Zertifikate bauen =====
-''/​etc/​ssl/​openssl.cnf''​ : ( SuSE 10.2, Debian 4.0 ) 
  
-''/​etc/​pki/​tls/​openssl.cnf''​ : ( CentOS 5 ) +  ​openssl ​req -new -newkey rsa -nodes -subj /C=DE/ST=NRW/L=Essen/O=Linuxhotel/​CN=notebook15.linuxhotel.de -keyout serverkey.pem -out serverreq.csr
-<​file>​ +
-[ req_distinguished_name ] +
-countryName_default ​            = DE +
-stateOrProvinceName_default ​    = NRW +
-localityName_default ​           ​= Essen +
-</file>+
  
 ((https://​bettercrypto.org empfiehlt 4096 Bit)) ((https://​bettercrypto.org empfiehlt 4096 Bit))
-  openssl req -x509 -nodes -days 365 -newkey rsa -keyout serverkey.pem -out servercert.pem 
- 
-<​file>​ 
-Country Name (2 letter code) [DE]: 
-State or Province Name (full name) [NRW]: 
-Locality Name (eg, city) [Essen]: 
-Organization Name (eg, company) [Linuxhotel]:​ 
-Organizational Unit Name (eg, section) []: 
-Common Name (eg, YOUR name) []:​notebook07.linuxhotel.de 
-Email Address []:​nutzer07@notebook07.linuxhotel.de 
-</​file>​ 
  
 Schlüssel ansehen: Schlüssel ansehen:
   openssl rsa -in serverkey.pem -text   openssl rsa -in serverkey.pem -text
 +
 +Aufgaben: ​
 +  * welche Länge hat der Schlüssel?
 +  * wie lässt sich ein ECDSA Schlüssel erzeugen?
  
 Zertifikat ansehen: Zertifikat ansehen:
Zeile 40: Zeile 35:
  
 ===== Server Zertifikat und CA selbst bauen ===== ===== Server Zertifikat und CA selbst bauen =====
-==== Als root Vorgabewerte setzen ​====+==== nutzer ca anlegen ==== 
 +  useradd -s /bin/bash -m ca 
 +==== Als Nutzer ca eine Beispiel CA erstellen ​==== 
 +TODO: ca und intermediate-ca bauen. ca signiert nur intermediate-ca. intermediate-ca signiert server-zertifikate.  
 + 
 ''/​etc/​ssl/​openssl.cnf''​ : ( SuSE 10.2, ab Debian 4.0 ) ''/​etc/​ssl/​openssl.cnf''​ : ( SuSE 10.2, ab Debian 4.0 )
  
Zeile 65: Zeile 64:
  
  
-[ policy_match ] +# TODO: brauchen wir das? 
-countryName ​            = optional +#[ policy_match ] 
-stateOrProvinceName ​    = optional +#countryName ​            = optional 
-organizationName ​       = optional+#stateOrProvinceName ​    = optional 
 +#organizationName ​       = optional
  
  
  
-req_distinguished_name ​+v3_ca 
-countryName ​                    = Country Name (2 letter code) + 
-countryName_default ​            DE +basicConstraints ​critical,CA:false
-stateOrProvinceName ​            = State or Province Name (full name) +
-stateOrProvinceName_default ​    = NRW +
-localityName ​                   = Locality Name (egcity) +
-localityName_default ​           = Essen +
-0.organizationName ​             = Organization Name (eg, company) +
-0.organizationName_default ​     = Linuxhotel +
 </​file>​ </​file>​
  
-  useradd -s /bin/bash -m ca +Verzeichnisse und Dateien ​für die CA:
-==== Als Nutzer ca eine Beispiel CA erstellen ==== +
-TODO: ca und intermediate-ca bauen. ca signiert nur intermediate-ca. intermediate-ca signiert server-zertifikate.  +
-  +
-Verzeichnisse und Dateien ​fuer die CA:+
   su - ca   su - ca
   mkdir -p ca.linuxhotel.de/​{private,​newcerts}   mkdir -p ca.linuxhotel.de/​{private,​newcerts}
Zeile 137: Zeile 126:
 Im Feld "​Common Name" muss der korrekte DNS-Name des Servers eingetragen werden. Für Wildcard-Zertifikate muss an Stelle des Hostnamens ein ''​*''​ (z.B. ''​*.example.com''​) eingetragen werden. Soll das Wildcard-Zertifikat zusätzlich auch die übergeordnete Domain (z.B. ''​example.com''​) abdecken, dann muss man diesen Namen als ''​subjectAltName''​ hinzufügen,​ wie [[apache-ssl#​ssl_tls_und_name_based_virtual_hosts]] beschrieben. ​ Im Feld "​Common Name" muss der korrekte DNS-Name des Servers eingetragen werden. Für Wildcard-Zertifikate muss an Stelle des Hostnamens ein ''​*''​ (z.B. ''​*.example.com''​) eingetragen werden. Soll das Wildcard-Zertifikat zusätzlich auch die übergeordnete Domain (z.B. ''​example.com''​) abdecken, dann muss man diesen Namen als ''​subjectAltName''​ hinzufügen,​ wie [[apache-ssl#​ssl_tls_und_name_based_virtual_hosts]] beschrieben. ​
  
-  ​openssl ​req -new -newkey rsa:2048 -nodes -sha512 -subj /​C=DE/​ST=NRW/​L=Essen/​O=Linuxhotel/​CN=notebook15.linuxhotel.de/​subjectAltName=DNS.1=notebook15.linuxhotel.de,​DNS.2=*.notebook15.linuxhotel.de ​-keyout server-ssl/​serverkey.pem -out server-ssl/​serverreq.csr+Version 1.1.1 von openssl ​verspricht mit dem Schalter ''​-addext 'subjectAltName = DNS:*.notebook15.linuxhotel.de,​ DNS:notebook15.linuxhotel.de' ''​ erstmals eine übersichtliche Lösung für das Problem (TODO: testen)Bis dahin brauchen wir für den Request eine eigene Konfigurationsdatei:​ 
 +<file txt subjectAltName-openssl.cnf> 
 +[req] 
 +prompt = no 
 +req_extensions = ext 
 +distinguished_name = dn
  
 +[dn]
 +CN=z22.test
 +C=DE
 +ST=NRW
 +L=Essen
 +O=Linuxhotel
 +
 +[ext]
 +subjectAltName = DNS:​*.z22.test,​DNS:​z22.test
 +</​file>​
 +  openssl req -new -newkey rsa:2048 -nodes -sha512 -config subjectAltName-openssl.cnf -keyout server-ssl/​serverkey.pem -out server-ssl/​serverreq.csr
  
 Pruefen ob Antrag und Schlüssel ok sind: Pruefen ob Antrag und Schlüssel ok sind:
Zeile 150: Zeile 155:
  
 ==== Als Nutzer ca das Server-Zertifikat unterschreiben ==== ==== Als Nutzer ca das Server-Zertifikat unterschreiben ====
 +Aus ''​man 8 ca'': ​ //The ca command is quirky and at times downright unfriendly.
 +The ca utility was originally meant as an example of how to do things in a CA. It was not supposed to be used as a full blown CA itself//
 +
 +
   su - ca   su - ca
   openssl ca -in serverreq.csr -out servercert.pem   openssl ca -in serverreq.csr -out servercert.pem
 +oder mit X509v3 extensions (z.B. für Subject Alternative Name) 
 +  openssl ca -extensions v3_ca -in serverreq.csr -out servercert.pem 
 +  ​
 Anzeigen des Server-Zertifikats:​ Anzeigen des Server-Zertifikats:​
   openssl x509 -in servercert.pem -text | less   openssl x509 -in servercert.pem -text | less
lpi2/ssl.txt · Zuletzt geändert: 2024/03/21 16:48 von sven_ruess