Both sides previous revision Previous revision Next revision | Previous revision |
linux:create-client-server-certificate [2017/10/17 12:38] – [Funktionsprinzip einer TLS Verschlüsselung] michael | linux:create-client-server-certificate [2019/03/07 14:07] (current) – [Verteilen der neu erstellten Keys / Certs] michael |
---|
====== 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 ab. TLS besteht aus zwei "Ebenen" ("Layers"), die jeweils als Protokolle implementiert sind. Dabei 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 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|}} |
| |
---- | ---- |
<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. |
| |
---- | ---- |
| |
- 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.16.9.30,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> |
| |
</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]] |
| |
| |