Felidae schrieb:
Das habe ich anders gelernt.
TLS (Transport Layer Security) ist eine Verschlüsselte Datenübertragung.
Genau so wie bei einer ssh Kommunikation, haben Client und Server je ein Schlüsselpaar mit dem sie die Daten verschlüssel
und da sie sich gegenseitig kennen, reichen diese Schlüssel aus, um sich gegenseitig zu identifizieren.
Die Verschlüssel am Transport ist z.B. AES, der Schlüssel für AES wird per DH ausgehandelt, da reicht dir ein Öffentliches Zertifikat (Client) und ein Private Key (Server), aber du hast am Anfang keinen Private Key am Client, dieser wird erst per DH ermittelt. Das Certifikat funktioniert nur als Trust Anchor, nicht mehr, nicht weniger.
SSH kann übrigens auch mit X509 verwendet werden, ebenso kennt SSH auch das Konzept von Key Signing, was z.B. durch Hashicorp Vault und andere Tools sogar gut automatisierbar ist.
Der CA ist ein Server der zwei aufgaben hat. 1. Zertifikate zu signieren und 2. Clients gegenüber die Echtheit eines Zertifikat zu bestätigen.
Kaum ein Client prüft heute Zertifikate, abgesehen von Datum, Trust Chain und paar andre Faktoren noch groß. OCSP und andere haben Impact auf die Latenz von Anwendungen, und würden dazu führen das bei nicht Verfügbarkeit dieser die Verbindung abgebrochen werden müsste. Gibt natürlich noch OCSP Stapling, aber lassen wir es mal mit den Details, zumal nicht jede Anwendung heute ein vorbildlicher Browser ist.
Daher sind Selbst signierte Zertifikate wertlos.
Nein, für den Browser, nicht für diverse andere Anwendungen, wie z.b. ein VPN. Auch mTLS kommt prima mit nicht öffentlich signierten Certs aus. Der Client hat hart kodiert die CA, nur der Client muss davon wissen, egal was alle anderen Programme oder Tools an Meinung dazu haben.
Das ist wie bei einem Perso. den kann man ja auch nicht selbst aus ducken.
Kann ich den Autovergleich nochmal sehen?
Für ein privaten VPN reicht es einen Server Schlüsselpaar zu erstellen und das der Server den öffentlichen Schlüssel des Client kennt,
um eine sichere verschlüsselte Verbindung aufzubauen.
So arbeiten, moderne, VPNs nicht. Beide Seiten müssen sich gegenseitig vertrauen, oben drauf prüft ein VPN Server noch die CRL der CA, weitere Authentifizierung (z.B. Azure AD) und ob der Cert Typ (Client/Server) korrekt ist.
Der Client muss dem Server vertrauen, das machen übrigens Browser auch: Google Chrome traut für bestimmte Dienste nur der CA die man ihm "einprogrammiert" hat, früher gab es sogar mal HPKP.