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/08/10 11:02]
ingo_wichmann
lpi2:ssl [2019/01/31 21:45] (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 ))
 +
 ====== 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:
Zeile 10: Zeile 12:
   * welche Bitlänge haben die Diffie Hellman Parameter?   * 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 =====
  
Zeile 27: Zeile 32:
  
 ===== 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 52: Zeile 61:
  
  
-[ 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 124: Zeile 123:
 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 137: Zeile 152:
  
 ==== 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: 2019/01/31 21:45 (Externe Bearbeitung)