Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


fortgeschrittene: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
fortgeschrittene:ssl [2011/04/07 22:05]
iw
fortgeschrittene:ssl [2024/03/21 16:48] (aktuell)
Zeile 1: Zeile 1:
-====== Selbstsignierte Server Zertifikate bauen ====== +TODO: Lösung auf Basis von CFSSL, Boulder oder Consul evaluieren (( https://www.heise.de/​select/​ix/​2019/​1/​1545992707007070 ))
-''​/etc/ssl/openssl.cnf''​ : ( SuSE 10.2, Debian 4.0 )+
  
-''/​etc/​pki/​tls/​openssl.cnf''​ : ( CentOS 5 ) +====== Links ====== 
-<​file>​ +  * [[https://crt.sh|Log aller ausgestellten Zertifikate]]
-[ 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+====== OpenSSL ====== 
 +===== Diffie Hellman Schlüsselaustausch vorbereiten ===== 
 +DH-Parameter erzeugen((https://​bettercrypto.org empfiehlt ​4096 Bit)) 
 +  openssl dhparam ​--out /​etc/​ssl/​dhparams.pem
  
-<​file>​ +DH-Parameter ansehen
-Country Name (2 letter code) [DE]+  ​openssl dhparam -text -in /​etc/​ssl/​dhparams.pem 
-State or Province Name (full name) [NRW]: + 
-Locality Name (eg, city) [Essen]: +Aufgabe:  
-Organization Name (eg, company) [Linuxhotel]+  * welche Bitlänge haben die Diffie Hellman Parameter?​ 
-Organizational Unit Name (eg, section) []+ 
-Common Name (eg, YOUR name) []:notebook07.linuxhotel.de +Doku
-Email Address []:nutzer07@notebook07.linuxhotel.de +  * https://blog.zeit.de/​mathe/​allgemein/​daten-verschluesselung-mathe/​ 
-</file>+  * https://​weakdh.org/​sysadmin.html 
 +===== Selbstsignierte Server Zertifikate bauen ===== 
 + 
 +  openssl req -new -newkey rsa:​4096bits -sha512 -x509 -nodes -subj /​C=DE/​ST=NRW/​L=Essen/​O=Linuxhotel/​CN=notebook15.linuxhotel.de ​-keyout server.key -out server.crt 
 + 
 +((https://​bettercrypto.org empfiehlt 4096 Bit))
  
 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:
   openssl x509 -in servercert.pem -text   openssl x509 -in servercert.pem -text
  
-====== 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
 <​file>​ <​file>​
 [ 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
-certificate = $dir/ca.linuxhotel.de.cert.pem +certificate = $dir/cacert.pem 
-private_key = $dir/​private/​ca.linuxhotel.de.key.pem+private_key = $dir/​private/​cakey.pem
 serial ​         = $dir/serial serial ​         = $dir/serial
 default_days ​   = 365 default_days ​   = 365
  
-req_distinguished_name ​+… 
-countryName_default ​            = DE + 
-stateOrProvinceName_default ​    = NRW +# TODO: brauchen wir das? 
-localityName_default ​           ​Essen +#policy_match ​
-0.organizationName_default ​     ​Linuxhotel+#​countryName ​            = optional 
 +#​stateOrProvinceName ​    = optional 
 +#​organizationName ​       ​optional 
 + 
 +… 
 + 
 +[ v3_ca ] 
 + 
 +basicConstraints ​critical,​CA:​false
 </​file>​ </​file>​
  
-===== Als Nutzer eine Beispiel CA erstellen ===== +Verzeichnisse und Dateien ​für die CA: 
-Verzeichnisse und Dateien ​fuer die CA: +  ​su - ca
-  ​cd+
   mkdir -p ca.linuxhotel.de/​{private,​newcerts}   mkdir -p ca.linuxhotel.de/​{private,​newcerts}
   cd ca.linuxhotel.de   cd ca.linuxhotel.de
Zeile 62: Zeile 84:
   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 -des3 -out private/ca.linuxhotel.de.key.pem 2048+  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/ca.linuxhotel.de.key.pem -out ca.linuxhotel.de.cert.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 73: Zeile 95:
  
 Anzeigen des Root-CA-Zertifikats:​ Anzeigen des Root-CA-Zertifikats:​
-  openssl x509 -in ca.linuxhotel.de.cert.pem -text | less+  openssl x509 -in cacert.pem -text | less
  
-===== Als root ein Server-Zertifikat beantragen ​=====+==== Als root ein Server-Zertifikat beantragen ====
 Verzeichnis anlegen: Verzeichnis anlegen:
   cd   cd
   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 -keyout server-ssl/​serverkey.pem -out server-ssl/​serverreq.pem+  openssl genrsa -out server-ssl/​serverkey.pem 2048 
 +  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 
 +(( TODO: mit ''​-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
Zeile 87: Zeile 124:
 </​file>​ </​file>​
  
-Pruefen ob Antrag und Schluessel ​ok sind: +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 -in server-ssl/​serverreq.pem -noout -verify -key server-ssl/​serverkey.pem+ 
 +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: 
 +  openssl req -in server-ssl/​serverreq.csr -noout -verify -key server-ssl/​serverkey.pem
  
 Antrag ansehen: Antrag ansehen:
-  openssl req -in server-ssl/​serverreq.pem -noout -text+  openssl req -in server-ssl/​serverreq.csr -noout -text
  
-Antrag an Nutzer senden: +Antrag an Nutzer ​ca senden: 
-  cp server-ssl/​serverreq.pem /home/nutzer31+  cp server-ssl/​serverreq.csr /home/ca
  
-===== Als Nutzer das Server-Zertifikat unterschreiben ​===== +==== Als Nutzer ​ca das Server-Zertifikat unterschreiben ==== 
-  ​cd +Aus ''​man 8 ca'': ​ //The ca command is quirky and at times downright unfriendly. 
-  ​openssl ​ca -in serverreq.pem -out servercert.pem+The ca utility was originally meant as an example of how to do things ​in a CAIt was not supposed to be used as a full blown CA itself//
  
 +
 +  su - ca
 +  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
  
-===== Als root Zertifikat abholen ​=====  +==== Als root Zertifikat abholen ====  
-  cp /home/nutzer31/​servercert.pem server-ssl/+  cp /home/ca/​servercert.pem server-ssl/
  
 +==== testen ====
 +mit zwei Shell-Fenstern:​
 +=== als root / Server ===
 +  openssl s_server -cert server-ssl/​servercert.pem -key server-ssl/​serverkey.pem
  
-===== testen =====+=== als Nutzer / Client ​=== 
 +//openssl s_server muss noch laufen// 
 +  openssl s_client -connect localhost:​4433 -CAfile /​home/​ca/​ca.linuxhotel.de/​cacert.pem
  
-als root / Server: 
-  openssl s_server -cert server-ssl/​servercert.pem -key server-ssl/​serverkey.pem 
  
-als Nutzer / Client: 
-  openssl s_client -connect localhost:​4433 -CAfile ca.linuxhotel.de.cert.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 =====
 +//Anleitung noch nicht fertig//
  
-====== Client Zertifikate bauen ====== 
 Erzeugen eines Schluessels fuer das Zertifikat: Erzeugen eines Schluessels fuer das Zertifikat:
   openssl genrsa -des3 -out nutzer-key.pem 2048   openssl genrsa -des3 -out nutzer-key.pem 2048
Zeile 131: Zeile 218:
  
 Antrag fuer Client-Zertifikat erzeugen: ( Todo: nicht sicher ob -extfile hier geht ... ) Antrag fuer Client-Zertifikat erzeugen: ( Todo: nicht sicher ob -extfile hier geht ... )
-  openssl req -extfile client.ext -new -key nutzer-key.pem -out nutzer-req.pem+  openssl req -extfile client.ext -new -key nutzer-key.pem -out nutzer-req.csr
 <​file>​ <​file>​
 Common Name (eg, YOUR name) []:​nutzer@notebook32.linuxhotel.de Common Name (eg, YOUR name) []:​nutzer@notebook32.linuxhotel.de
Zeile 139: Zeile 226:
 ... und wie oben unterschreiben ... und wie oben unterschreiben
  
 +==== testen ====
 +mit zwei Shell-Fenstern:​
 +=== Server ===
 +  openssl s_server -cert servercert.pem -key serverkey.pem -CAfile cacert.pem
 +=== Client ===
 +//openssl s_server muss noch laufen//
 +  openssl s_client -connect localhost:​4433 -CAfile cacert.pem -cert nutzer-cert.pem -key nutzer-key.pem
  
-===== testen ​===== +====== CA.pl ====== 
-als Nutzer, mit zwei Shell-Fenstern:+===== Server Zertifikat und CA selbst bauen ===== 
 +==== Als root Vorgabewerte setzen ==== 
 +''/​etc/​ssl/​openssl.cnf'' ​( SuSE 10.2, Debian 4.0 )
  
-Server: +''/​etc/​pki/​tls/​openssl.cnf'' ​( CentOS 5 )
-  ​openssl ​s_server -cert servercert.pem -key serverkey.pem -CAfile ca.linuxhotel.de.cert.pem +
-Client: +
-  openssl s_client -connect localhost:​4433 -CAfile ca.linuxhotel.de.cert.pem -cert nutzer-cert.pem -key nutzer-key.pem+
  
 +die folgenden Zeilen anpassen
 +<​file>​
 +[ ca ]
 +default_ca ​   = CA_default
  
-====== ​Alternative ​GnuTLS ======+[ CA_default ] 
 +dir             = ./demoCA 
 +certs           = $dir/​certs 
 +database ​       = $dir/​index.txt 
 +new_certs_dir ​  = $dir/​newcerts 
 +certificate = $dir/​cacert.pem 
 +private_key = $dir/​private/​cakey.pem 
 +serial ​         = $dir/​serial 
 +default_days ​   = 365 
 + 
 +[ req_distinguished_name ] 
 +countryName ​                    = Country Name (2 letter code) 
 +countryName_default ​            = DE 
 +stateOrProvinceName ​            = State or Province Name (full name) 
 +stateOrProvinceName_default ​    = NRW 
 +localityName ​                   = Locality Name (eg, city) 
 +localityName_default ​           = Essen 
 +0.organizationName ​             = Organization Name (eg, company) 
 +0.organizationName_default ​     = Linuxhotel 
 +</​file>​ 
 + 
 +  useradd -s /bin/bash -m ca 
 +==== Als Nutzer ca eine Beispiel CA erstellen ==== 
 +Verzeichnisse und Dateien fuer die CA: 
 +  su - ca 
 +  /​usr/​lib/​ssl/​misc/​CA.pl -newca 
 + 
 +==== Als root ein Server-Zertifikat beantragen ==== 
 +  cd 
 +  /​usr/​lib/​ssl/​misc/​CA.pl -newreq 
 + 
 +Antrag an Nutzer ca senden: 
 +  cp newreq.pem /home/ca/ 
 +  (vormals: newreq.csr statt newreq.pem) 
 + 
 +==== Als Nutzer ca das Server-Zertifikat unterschreiben ==== 
 +  su - ca 
 +  /​usr/​lib/​ssl/​misc/​CA.pl -signreq 
 + 
 +==== Als root Zertifikat abholen ====  
 +  cp /​home/​ca/​newcert.pem server-ssl/​servercert.pem 
 +  cp newkey.pem server-ssl/​serverkey.pem 
 + 
 +==== testen ==== 
 +mit zwei Shell-Fenstern:​ 
 +=== als root / Server === 
 +  openssl s_server -cert server-ssl/​servercert.pem -key server-ssl/​serverkey.pem 
 + 
 +=== als Nutzer / Client === 
 +//openssl s_server muss noch laufen// 
 +  openssl s_client -connect localhost:​4433 -CAfile /​home/​ca/​demoCA/​cacert.pem 
 + 
 +====== GnuTLS ======
 === Debian === === Debian ===
 Pakete: ''​gnutls-bin gnutls-doc''​ Pakete: ''​gnutls-bin gnutls-doc''​
 +
 +=== openSuSE (ab 12.1) ===
 +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 =====
-  certtool --generate-privkey --outfile ​notebook26.linuxhotel.de.key.pem +  certtool --generate-privkey --outfile ​serverkey.pem 
-  certtool --generate-self-signed --load-privkey ​notebook26.linuxhotel.de.key.pem --outfile ​notebook26.linuxhotel.de.cert.pem+  certtool --generate-self-signed --load-privkey ​serverkey.pem --outfile ​servercert.pem
 <​file>​ <​file>​
   Country name (2 chars): DE   Country name (2 chars): DE
Zeile 177: Zeile 337:
  
 Schlüssel ansehen: Schlüssel ansehen:
-  certtool --key-info --infile ​noetbook26.linuxhotel.de.key.pem +  certtool --key-info --infile ​serverkey.pem 
-  openssl rsa -in notebook26.linuxhotel.de.key.pem -text+  openssl rsa -in serverkey.pem -text
  
 Zertifikat ansehen: Zertifikat ansehen:
-  certtool --certificate-info --infile ​notebook26.linuxhotel.de.cert.pem+  certtool --certificate-info --infile ​servercert.pem
   openssl x509 -in servercert.pem -text   openssl x509 -in servercert.pem -text
  
-====== Server Zertifikat und CA selbst bauen ====== +===== Server Zertifikat und CA selbst bauen ===== 
-===== Als Nutzer eine Beispiel CA erstellen ​=====+  ​useradd -m ca 
 +==== Als Nutzer ​ca eine Beispiel CA erstellen ====
 Verzeichnisse und Dateien fuer die CA: Verzeichnisse und Dateien fuer die CA:
-  ​cd+  ​su - ca
   mkdir -p ca.linuxhotel.de/​{private,​newcerts}   mkdir -p ca.linuxhotel.de/​{private,​newcerts}
   cd ca.linuxhotel.de   cd ca.linuxhotel.de
  
 Erzeugen eines Schluessels fuer die CA: Erzeugen eines Schluessels fuer die CA:
-  certtool --generate-privkey --outfile ​ca.linuxhotel.de.key.pem+  certtool --generate-privkey --outfile ​cakey.pem
  
 Erzeugen eines selbstsignierten Root-CA-Zertifikats:​ Erzeugen eines selbstsignierten Root-CA-Zertifikats:​
-  certtool --generate-self-signed ​ --outfile ​ca.linuxhotel.de.cert.pem --load-privkey ​ca.linuxhotel.de.ke +  certtool --generate-self-signed ​ --outfile ​cacert.pem --load-privkey ​cakey.pem
-y.pem+
 <​file>​ <​file>​
 Country name (2 chars): DE Country name (2 chars): DE
Zeile 218: Zeile 378:
  
 Anzeigen des Root-CA-Zertifikats:​ Anzeigen des Root-CA-Zertifikats:​
-  certtool --certificate-info --infile ​ca.linuxhotel.de.cert.pem +  certtool --certificate-info --infile ​cacert.pem 
-  openssl x509 -in ca.linuxhotel.de.cert.pem -text | less+  openssl x509 -in cacert.pem -text | less
  
-===== Als root ein Server-Zertifikat beantragen ​=====+==== Als root ein Server-Zertifikat beantragen ====
 Verzeichnis anlegen: Verzeichnis anlegen:
   cd   cd
   mkdir server-ssl   mkdir server-ssl
  
-Antrag und Schluessel ​fuer Server erzeugen: +Antrag und Schluessel ​für Server erzeugen: 
-  certtool --generate-privkey --outfile server-ssl/notebook26.linuxhotel.de.key.pem +  certtool --generate-privkey --outfile server-ssl/serverkey.pem 
-  certtool --generate-request --load-privkey server-ssl/notebook26.linuxhotel.de.key.pem --outfile server-ssl/notebook26.linuxhotel.de.req.pem+  certtool --generate-request --load-privkey server-ssl/serverkey.pem --outfile server-ssl/serverreq.csr
 <​file>​ <​file>​
 Country name (2 chars): DE Country name (2 chars): DE
Zeile 257: Zeile 417:
  
 Pruefen ob Antrag und Schluessel ok sind: Pruefen ob Antrag und Schluessel ok sind:
-  openssl req -in server-ssl/notebook26.linuxhotel.de.req.pem ​-noout -verify -key server-ssl/notebook26.linuxhotel.de.key.pem+  openssl req -in server-ssl/serverreq.csr -noout -verify -key server-ssl/serverkey.pem
  
 Antrag ansehen: Antrag ansehen:
-  openssl req -in server-ssl/notebook26.linuxhotel.de.req.pem ​-noout -text+  openssl req -in server-ssl/serverreq.csr -noout -text
  
-Antrag an Nutzer senden: +Antrag an Nutzer ​ca senden: 
-  cp server-ssl/notebook26.linuxhotel.de.req.pem ​/home/nutzer26+  cp server-ssl/serverreq.csr /home/ca 
 +  chmod a+r /​home/​ca/​serverreq.csr
  
-===== Als Nutzer das Server-Zertifikat unterschreiben ​===== +==== Als Nutzer ​ca das Server-Zertifikat unterschreiben ==== 
-  ​cd +  ​su - ca 
-  certtool --generate-certificate --load-request ​notebook26.linuxhotel.de.req.pem ​--outfile ​notebook26.linuxhotel.de.cert.pem --load-ca-certificate ca.linuxhotel.de.cert.pem --load-ca-privkey ca.linuxhotel.de.key.pem+  certtool --generate-certificate --load-request ​serverreq.csr --outfile ​servercert.pem --load-ca-certificate ca.linuxhotel.de/cacert.pem --load-ca-privkey ca.linuxhotel.de/cakey.pem
 <​file>​ <​file>​
 Enter the certificate'​s serial number in decimal (default: 1302213585): ​ Enter the certificate'​s serial number in decimal (default: 1302213585): ​
Zeile 288: Zeile 449:
  
 Anzeigen des Server-Zertifikats:​ Anzeigen des Server-Zertifikats:​
-  certtool --certificate-info --infile ​notebook26.linuxhotel.de.cert.pem +  certtool --certificate-info --infile ​servercert.pem 
-  openssl x509 -in notebook26.linuxhotel.de.cert.pem -text | less+  openssl x509 -in servercert.pem -text | less
  
-===== Als root Zertifikat abholen ​=====  +==== Als root Zertifikat abholen ====  
-  cp /home/nutzer26/notebook26.linuxhotel.de.cert.pem server-ssl/+  cp /home/ca/servercert.pem server-ssl/
  
-===== testen =====+==== testen ==== 
 +mit zwei Shell-Fenstern:​ 
 +=== als root / Server ​=== 
 +  openssl s_server -cert server-ssl/​servercert.pem -key server-ssl/​serverkey.pem
  
-als root Server: +=== als Nutzer / Client === 
-  openssl ​s_server ​-cert server-ssl/notebook26.linuxhotel.de.cert.pem -key server-ssl/notebook26.linuxhotel.de.key.pem+//openssl s_server muss noch laufen/
 +  openssl ​s_client ​-connect localhost:​4433 ​-CAfile ​/home/ca/ca.linuxhotel.de/​cacert.pem
  
-als Nutzer / Client: +==== Doku ==== 
-  ​openssl s_client -connect localhost:4433 -CAfile ca.linuxhotel.de.cert.pem+  ​* http://www.gnu.org/​software/​gnutls/​manual/​html_node/​Invoking-certtool.html#​Invoking-certtool
  
 +====== TinyCA ======
 +Paket: tinyca
  
 +//Anleitung noch nicht fertig//
  
-==== Doku ==== +===== Server Zertifikat und CA selbst bauen ===== 
-  ​http://www.gnu.org/software/gnutls/manual/html_node/​Invoking-certtool.html#​Invoking-certtool+==== eine Beispiel CA erstellen ​==== 
 +  ​tinyca2 & 
 +{{ :​fortgeschrittene:​tinyca-01-erstelle_ca.png?​nolink&​ |}} 
 +{{ :​fortgeschrittene:​tinyca-02-konfiguration_der_ca.png?​nolink&​ |}} 
 +{{ :​fortgeschrittene:​tinyca-03-ca-erstellt.png?​nolink&​ |}} 
 +==== Server-Zertifikat erstellen ==== 
 +{{ :​fortgeschrittene:​tinyca-05-tiny_ca_management_0.7.5_-_ca.linuxhotel.de.png?​nolink&​ |}} 
 +{{ :​fortgeschrittene:​tinyca-06-erstelle_anforderung.png?​nolink&​ |}} 
 +TinyCA fordert bei der Erstellung auch für Serverzertifikate zwingend ein Password, aber man kann das Zertifikat später auch ohne Passwort exportieren (( [[http://bugs.debian.org/cgi-bin/bugreport.cgi?​bug=505437]] )) 
 +{{ :​fortgeschrittene:​tinyca-07-signiere_anforderung.png?​nolink&​ |}} 
 +{{ :​fortgeschrittene:​tinyca-08-anforderung-unterschrieben.png?​nolink&​ |}} 
 +==== Serverzertifikat exportieren ====  
 +{{ :​fortgeschrittene:​tinyca-09-tiny_ca_management_0.7.5_-_ca.linuxhotel.de.png?​nolink&​ |}} 
 +{{ :​fortgeschrittene:​tinyca-10-zertifikat_exportieren.png?​nolink&​ |}} 
 +==== Serverschlüssel exportieren ====  
 +{{ :​fortgeschrittene:​tinyca-11-tiny_ca_management_0.7.5_-_ca.linuxhotel.de.png?​nolink |}} 
 +{{ :​fortgeschrittene:​tinyca-12-schlüssel_exportieren.png?​nolink&​ |}} 
 +{{ :​fortgeschrittene:​tinyca-13-schlüssel_ohne_passwort_exportieren.png?​nolink&​ |}} 
 +{{ :​fortgeschrittene:​tinyca-14-schlüssel-exportiert.png?​nolink&​ |}} 
 + 
 +==== testen ==== 
 +mit zwei Shell-Fenstern:​ 
 +=== als root Server === 
 +  openssl s_server -cert server-ssl/servercert.pem ​-key server-ssl/​serverkey.pem 
 + 
 +=== als Nutzer / Client === 
 +//openssl s_server muss noch laufen// 
 +  openssl s_client ​-connect localhost:​4433 -CAfile /​home/​ca/​ca.linuxhotel.de/​cacert.pem
  
 ====== Links and Doku ====== ====== Links and Doku ======
Zeile 311: Zeile 506:
   * [[ http://​www.cryptool.de |  E-Learning-Programm für Kryptologie ]]   * [[ http://​www.cryptool.de |  E-Learning-Programm für Kryptologie ]]
   * [[ http://​www.madboa.com/​geek/​openssl/​ | OpenSSL Command-Line HOWTO ]]   * [[ http://​www.madboa.com/​geek/​openssl/​ | OpenSSL Command-Line HOWTO ]]
-  * [[ http://​www.cacert.org | kostenlose, Web-of-trust-basierte Zertifikate ]]+  * [[ http://​www.cacert.org | caCert: ​kostenlose, Web-of-trust-basierte Zertifikate ]] 
 +  * [[ http://​portecle.sourceforge.net/​ | portecle: GUI application for creating, managing and examining keystores, keys, certificates,​ certificate requests, certificate revocation lists and more. ]]  
 +  * http://​math.cmu.edu/​~svasey/​old-homepage-archive-2013/​projects/​software-usage-notes/​ssl_en.html 
  
fortgeschrittene/ssl.1302213902.txt.gz · Zuletzt geändert: 2011/04/07 22:05 von iw