linux:create-client-server-certificate

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
linux:create-client-server-certificate [2017/10/17 10:46] – [Warum eine TLS Verschlüsselung wichtig ist?] michaellinux:create-client-server-certificate [2019/03/07 14:07] (current) – [Verteilen der neu erstellten Keys / Certs] michael
Line 1: Line 1:
-====== Create Client-Server TLS Certificates ======+====== Create Client/Server TLS Certificate ====== 
 + 
 +{{:linux:tux:templar.png?nolink&180|}}
  
 ---- ----
  
 ===== Funktionsprinzip einer TLS Verschlüsselung ===== ===== Funktionsprinzip einer TLS Verschlüsselung =====
-FIXME+**TLS** ''(Transaction Layer Security)'' ist die standardisierten Weiterentwicklungen von SSL (TLS 1.0 = SSL 3.1). SSL wird also nun unter dem Namen TLS weiterentwickelt. TLS und SSL werden daher oft auch synonym verwendet. ''TLS ist laut RFC 2246 eine Technologie zur Sicherung des Netzwerk-Datenaustausches zwischen Anwendungen, das Datenschutz und Datenintegrität ("privacy and integrity") gewährleistet (bzw. gewährleisten soll).'' Der generelle Ablauf bei TLS beginnt mit dem Aufbau einer Verbindung vom Client zum Server. Dabei schickt er auch gleich eine Liste an unterstützten Cipher Suites mit. Anschliessend authentisiert sich der Server gegenüber dem Client mit seinem Zertifikat und der ausgewählten Cipher Suite. Der Client überprüft das Zertifikat und authentisiert sich ggf. selbst auch noch gegenüber dem Server mit einem eigenen Zertifikat. Nun schickt entweder der Client dem Server eine verschlüsselte Zufallszahl, die mit dem öffentlichen Schlüssel des Servers verschlüsselt ist, oder beide Parteien berechnen ein gemeinsames Geheimnis mit dem Diffie-Hellman-Schlüsselaustauschverfahren. Mit dem daraus abgeleiteten kryptographischen Schlüssel, werden nun alle Nachrichten der Verbindung mit einem ausgewählten symmetrischen Verschlüsselungsverfahren verschlüsselt. 
 + 
 +**Beispiel Umgebung:** 
 +{{:linux:client-server-tls.jpg|}}
  
 ---- ----
Line 10: Line 15:
 <WRAP center box 100%> <WRAP center box 100%>
 ===== Erstellungsvorgang von unabhängigen Client / Server Zertifikaten ===== ===== Erstellungsvorgang von unabhängigen Client / Server Zertifikaten =====
-''Im folgenden Beispiel, erstelle ich **zwei neue Server Zertifikate** und **ein neues Client Zertifikat**, welche **beide mit einer lokal erstellten CA signiert** werden.'' +''Im folgenden Beispiel, erstelle ich **ein neues Server Zertifikat** als sowohl **ein neues Client Zertifikat**, welche **beide mit einer lokal erstellten CA signiert** werden.'' Der Aufbau entspricht der obigen Übersicht.
  
 ---- ----
Line 39: Line 44:
  
   - Wechseln in das Server_Cert-Key Hauptverzeichnis: <code># cd /opt/TLS_Certs/Server_Cert-Key/</code>   - Wechseln in das Server_Cert-Key Hauptverzeichnis: <code># cd /opt/TLS_Certs/Server_Cert-Key/</code>
-  - Erstellen der Zertifikat Konfigurationsdatei: <code># vim /opt/TLS_Certs/Server_Cert-Key/extfile.cnf</code> <sxh bash;>subjectAltName = DNS:vdock1.pnet.ch,IP:172.18.9.14,IP:127.0.0.1+  - Erstellen der Zertifikat Konfigurationsdatei: <code># vim /opt/TLS_Certs/Server_Cert-Key/extfile.cnf</code> <sxh bash;>subjectAltName = DNS:vdock1.pnet.ch
 extendedKeyUsage = serverAuth</sxh> extendedKeyUsage = serverAuth</sxh>
   - Erstellen des Server-Private-Keys: <code># openssl genrsa -out server-key.pem 4096</code>   - Erstellen des Server-Private-Keys: <code># openssl genrsa -out server-key.pem 4096</code>
Line 53: Line 58:
   - Erstellen der Zertifikat Konfigurationsdatei: <code># vim /opt/TLS_Certs/Client_Cert-Key/extfile.cnf</code> <sxh bash;>extendedKeyUsage = clientAuth</sxh>   - Erstellen der Zertifikat Konfigurationsdatei: <code># vim /opt/TLS_Certs/Client_Cert-Key/extfile.cnf</code> <sxh bash;>extendedKeyUsage = clientAuth</sxh>
   - Erstellen des neuen Client-Private-Keys: <code># openssl genrsa -out client-key.pem 4096</code>   - Erstellen des neuen Client-Private-Keys: <code># openssl genrsa -out client-key.pem 4096</code>
-  - Erstellen des CSR (Signing Request) für den Client: <code># openssl req -subj '/CN=vdock1.pnet.ch' -new -key client-key.pem -out client.csr</code> +  - Erstellen des CSR (Signing Request) für den Client: <code># openssl req -subj '/CN=vadmin.pnet.ch' -new -key client-key.pem -out client.csr</code> 
-  - Generieren des Client Zertifikats <wrap em>(mit 5 jähriger Gültigkeit)</wrap>: <code># openssl x509 -req -days 1825 -sha256 -in client.csr -CA ../ca.pem -CAkey ../ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf </code>+  - Generieren des Client Zertifikats <wrap em>(mit 5 jähriger Gültigkeit)</wrap>: <code># openssl x509 -req -days 1825 -sha256 -in client.csr -CA ../ca.pem -CAkey ../ca-key.pem -CAcreateserial -out client-cert.pem -extfile extfile.cnf </code>
  
 </WRAP> </WRAP>
 +
  
  
Line 62: Line 68:
  
 <WRAP center round important 100%> <WRAP center round important 100%>
-  * ''Der Inhalt von: **/opt/TLS_Certs/Server_Cert-Key/** wird in unserem Beispiel, **auf dem Appliokationsserver "vdock1.pnet.ch" kopiert** und dort in der entsprechenden Applikation eingerichtet.''+  * ''Der Inhalt von: **/opt/TLS_Certs/Server_Cert-Key/** wird in unserem Beispiel, **auf dem Applikationsserver "vdock1.pnet.ch" kopiert** und dort in der entsprechenden Applikation eingerichtet.''
  
-  * ''Der Inhalt von: **/opt/TLS_Certs/Client_Cert-Key/** wird auf **all unsere Clients kopiert** und dort eingerichtet, damit diese Zugriff via TLS auf die Applikation erhalten.''+  * ''Der Inhalt von: **/opt/TLS_Certs/Client_Cert-Key/** wird **auf unseren Admin-Client(Server) "vadmin.pnet.ch" kopiert** und dort eingerichtet, damit der Zugriff via TLS auf die Applikation möglich wird.''
 </WRAP> </WRAP>
  
  
  
 +===== Weiteres =====
  
 +<WRAP center round download 100%>
 +''Ansible Skript zur vollautomatischen Erstellung und Verteilung der Key / Certs:''
 +  * 
 +</WRAP>
  
 +  * [[linux:openSSL|Praktische Experimente mit OpenSSL, sowie Certificate-Validation und Analyse]]
  
  
  • linux/create-client-server-certificate.1508230011.txt.gz
  • Last modified: 2017/10/17 10:46
  • by michael