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 12:23] – [Funktionsprinzip einer TLS Verschlüsselung] 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 =====
-**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).'' Historisch leitet sich TLS/SSL von IPSec abTLS besteht aus zwei "Ebenen" ("Layers"), die jeweils als Protokolle implementiert sindDabei baut das "Handshake Protocol" (Protokoll zum Aushandeln eines Datenkanals) auf dem "Record Protocol" (Protokoll zur Übermittlung von Datensätzen) auf. +**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 ServerDabei 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üsselaustauschverfahrenMit 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 12: 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 41: 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 55: 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 client-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 64: 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.1508235782.txt.gz
  • Last modified: 2017/10/17 12:23
  • by michael