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
lpi2:ssl [2018/06/15 11:53]
127.0.0.1 Externe Bearbeitung
lpi2:ssl [2020/03/04 10:12] (aktuell)
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 ​2048+  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?
 +
 +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:2048 -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 38: Zeile 35:
  
 ===== Server Zertifikat und CA selbst bauen ===== ===== Server Zertifikat und CA selbst bauen =====
-==== Als root Vorgabewerte setzen ​==== +==== nutzer ca anlegen ==== 
-''/​etc/​ssl/​openssl.cnf''​ : ( SuSE 10.2, Debian 4.0 )+  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/​pki/​tls/​openssl.cnf''​ : ( CentOS 5 )+''/​etc/​pki/​tls/​openssl.cnf''​ : ( ab CentOS 5 )
  
 die folgenden Zeilen anpassen die folgenden Zeilen anpassen
Zeile 63: 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 135: 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 148: 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
Zeile 165: Zeile 178:
 //openssl s_server muss noch laufen// //openssl s_server muss noch laufen//
   openssl s_client -connect localhost:​4433 -CAfile /​home/​ca/​ca.linuxhotel.de/​cacert.pem   openssl s_client -connect localhost:​4433 -CAfile /​home/​ca/​ca.linuxhotel.de/​cacert.pem
 +
 +
  
 === in der Praxis === === in der Praxis ===
 +Audit-Tools:​
 +  sslscan linuxhotel.de
 +  testssl.sh linuxhotel.de
 +
 Automatische Audits helfen die Konfiguration zu verbessern: Automatische Audits helfen die Konfiguration zu verbessern:
 +
   * https://​en.internet.nl   * https://​en.internet.nl
   * https://​www.ssllabs.com/​ssltest   * https://​www.ssllabs.com/​ssltest
lpi2/ssl.1529063593.txt.gz · Zuletzt geändert: 2018/07/05 15:52 (Externe Bearbeitung)