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
Nächste Überarbeitung Beide Seiten, nächste Überarbeitung
lpi2:ssl [2014/06/30 10:54]
ingo_wichmann [Links and Doku]
lpi2:ssl [2018/08/10 11:25]
ingo_wichmann [Diffie Hellman Schlüsselaustausch vorbereiten]
Zeile 1: Zeile 1:
 ====== OpenSSL ====== ====== OpenSSL ======
 +===== Diffie Hellman Schlüsselaustausch vorbereiten =====
 +DH-Parameter erzeugen: ((https://​bettercrypto.org empfiehlt 4096 Bit))
 +  openssl dhparam -2 -out /​etc/​ssl/​dhparams.pem
 +
 +DH-Parameter ansehen:
 +  openssl dhparam -text -in /​etc/​ssl/​dhparams.pem
 +
 +Aufgabe: ​
 +  * welche Bitlänge haben die Diffie Hellman Parameter?
 +
 ===== 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>+
  
-  openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout serverkey.pem -out servercert.pem +((https://​bettercrypto.org empfiehlt 4096 Bit))
- +
-<​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 31: Zeile 28:
 ===== Server Zertifikat und CA selbst bauen ===== ===== Server Zertifikat und CA selbst bauen =====
 ==== Als root Vorgabewerte setzen ==== ==== Als root Vorgabewerte setzen ====
-''/​etc/​ssl/​openssl.cnf''​ : ( SuSE 10.2, Debian 4.0 )+''/​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 39: Zeile 36:
 [ ca ] [ ca ]
 default_ca ​   = CA_default default_ca ​   = CA_default
 +
 +
  
 [ CA_default ] [ CA_default ]
 dir             = ./​ca.linuxhotel.de dir             = ./​ca.linuxhotel.de
 certs           = $dir/certs certs           = $dir/certs
 +crl_dir ​        = $dir/crl
 database ​       = $dir/​index.txt database ​       = $dir/​index.txt
 new_certs_dir ​  = $dir/​newcerts new_certs_dir ​  = $dir/​newcerts
Zeile 49: Zeile 49:
 serial ​         = $dir/serial serial ​         = $dir/serial
 default_days ​   = 365 default_days ​   = 365
 +
 +
 +
 +[ policy_match ]
 +countryName ​            = optional
 +stateOrProvinceName ​    = optional
 +organizationName ​       = optional
 +
 +
  
 [ req_distinguished_name ] [ req_distinguished_name ]
Zeile 59: Zeile 68:
 0.organizationName ​             = Organization Name (eg, company) 0.organizationName ​             = Organization Name (eg, company)
 0.organizationName_default ​     = Linuxhotel 0.organizationName_default ​     = Linuxhotel
 +
 </​file>​ </​file>​
  
   useradd -s /bin/bash -m ca   useradd -s /bin/bash -m ca
 ==== Als Nutzer ca eine Beispiel CA erstellen ==== ==== 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: Verzeichnisse und Dateien fuer die CA:
   su - ca   su - ca
Zeile 70: Zeile 82:
   echo 01 > serial   echo 01 > serial
  
-Erzeugen eines Schluessels fuer die CA: +Erzeugen eines Schluessels fuer die CA: ((https://​bettercrypto.org empfiehlt 4096 Bit)) 
-  openssl genrsa -aes256 -out private/​cakey.pem ​4096+  openssl genrsa -aes256 -out private/​cakey.pem ​2048
  
 Erzeugen eines selbstsignierten Root-CA-Zertifikats:​ Erzeugen eines selbstsignierten Root-CA-Zertifikats:​
-  openssl req -new -x509 -days 3650 -key private/​cakey.pem -out cacert.pem+  openssl req -new -x509 -sha512 ​-days 3650 -key private/​cakey.pem -out cacert.pem
 <​file>​ <​file>​
 Common Name (eg, YOUR name) []:​ca.linuxhotel.de Common Name (eg, YOUR name) []:​ca.linuxhotel.de
Zeile 88: Zeile 100:
   mkdir server-ssl   mkdir server-ssl
  
-Antrag und Schluessel fuer Server erzeugen: +Antrag und Schluessel fuer Server erzeugen: ​((https://​bettercrypto.org empfiehlt 4096 Bit)) 
-  openssl req -new -newkey rsa:2048 -nodes -sha256 ​-keyout server-ssl/​serverkey.pem -out server-ssl/​serverreq.csr +  openssl genrsa -out server-ssl/​serverkey.pem 2048 
-(( Todo: ''​-subj /​CN=<​your sever'​s address here>''​ ))+  openssl req -new -key server-ssl/​serverkey.pem -out server-ssl/​serverreq.csr 
 +oder 
 +  openssl req -new -newkey rsa:2048 -nodes -sha512 -keyout server-ssl/​serverkey.pem -out server-ssl/​serverreq.csr 
 +oder  
 +  openssl req -new -newkey rsa:2048 -nodes -sha512 -subj /​C=DE/​ST=NRW/​L=Essen/​O=Linuxhotel/​CN=notebook15.linuxhotel.de ​-keyout server-ssl/​serverkey.pem -out server-ssl/​serverreq.csr 
 +(( TODOmit ''​-subj''​ wird der Befehl nicht-interaktiv (d.h. keine Rückfragen),​ Beispiel: 
 +''​-subj /​C=DE/​ST=NRW/​L=Essen/​O=Linuxhotel/​CN=<​your sever'​s address here>'' ​ 
 +^Feld ^ Bedeutung ​               ^ Beispiel ​     ^ 
 +|/C=  | Country/​Staat ​           | DE            | 
 +|/ST= | State/​Bundesland ​        | NRW           | 
 +|/L=  | Location/​Ort ​            | Essen         | 
 +|/O=  | Organization/​Handelsname | Linuxhotel ​   | 
 +|/OU= | Organizational Unit      | Schulungs lab | 
 +|/CN= | Common Name              | example.com ​  | 
 +))
 <​file>​ <​file>​
 Common Name (eg, YOUR name) []:​notebook32.linuxhotel.de Common Name (eg, YOUR name) []:​notebook32.linuxhotel.de
 Email Address []:​root@notebook32.linuxhotel.de Email Address []:​root@notebook32.linuxhotel.de
 </​file>​ </​file>​
 +
 +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
 +
  
 Pruefen ob Antrag und Schlüssel ok sind: Pruefen ob Antrag und Schlüssel ok sind:
Zeile 123: Zeile 154:
 //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 ===
 +Audit-Tools:​
 +  sslscan linuxhotel.de
 +  testssl.sh linuxhotel.de
 +
 +Automatische Audits helfen die Konfiguration zu verbessern:
 +
 +  * https://​en.internet.nl
 +  * https://​www.ssllabs.com/​ssltest
 +  * https://​de.ssl-tools.net/​mailservers/​sys4.de
 +  * https://​dane.sys4.de/​
 +
 +===== Zertifikat widerufen =====
 +//Todo: noch nicht fertig//
 +  openssl ca -config example_root.conf -gencrl -keyfile privkey.pem \
 +    -cert example_root.cer -out example_root.crl.pem
 + ​openssl crl -inform PEM -in example_root.crl.pem -outform DER -out \
 +    example_root.crl && rm example_root.crl.pem
 +  su - ca
 +  echo 01 > crl
 +  openssl ca -revoke servercert.pem -keyfile serverkey.pem -cert xxx
  
 ===== Client Zertifikate bauen ===== ===== Client Zertifikate bauen =====
Zeile 199: Zeile 254:
  
 Antrag an Nutzer ca senden: Antrag an Nutzer ca senden:
-  cp newreq.csr /home/ca/+  cp newreq.pem /home/ca/ 
 +  (vormals: newreq.csr statt newreq.pem)
  
 ==== Als Nutzer ca das Server-Zertifikat unterschreiben ==== ==== Als Nutzer ca das Server-Zertifikat unterschreiben ====
Zeile 222: Zeile 278:
 Pakete: ''​gnutls-bin gnutls-doc''​ Pakete: ''​gnutls-bin gnutls-doc''​
  
-=== openSuSE 12.1 ===+=== openSuSE ​(ab 12.1===
 Pakete: ''​gnutls''​ Pakete: ''​gnutls''​
 +
 +===== Diffie Hellman Schlüsselaustausch vorbereiten =====
 +DH-Parameter erzeugen:
 +  certtool --generate-dh-params --outfile /​etc/​ssl/​dhparams.pem
 +
 +DH-Parameter ansehen:
 +  certtool --dh-info --infile /​etc/​ssl/​dhparams.pem
  
 ===== Selbstsignierte Server Zertifikate bauen ===== ===== Selbstsignierte Server Zertifikate bauen =====
lpi2/ssl.txt · Zuletzt geändert: 2024/03/21 16:48 von sven_ruess