Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ssl [2021/02/12 22:24] root [OpenSSL] |
ssl [2021/07/06 17:15] (aktuell) root [Bestandteile von Zertifikaten] |
||
---|---|---|---|
Zeile 32: | Zeile 32: | ||
* ähnlich OpenSSL | * ähnlich OpenSSL | ||
* eigentständige Implementierung (inkl. eigenständiger Bibliothek) | * eigentständige Implementierung (inkl. eigenständiger Bibliothek) | ||
+ | |||
+ | |||
+ | |||
+ | ===== Wie die Chain festgestellt wird ====== | ||
+ | |||
+ | * das Zertifikat (als Text) hat eine Sektion " | ||
+ | |||
+ | <sxh> | ||
+ | X509v3 Authority Key Identifier: | ||
+ | keyid: | ||
+ | |||
+ | </ | ||
+ | * das Zertifikat einer CA hat das Gegenstück " | ||
+ | |||
+ | <sxh> | ||
+ | | ||
+ | 08: | ||
+ | </ | ||
+ | |||
+ | Die Beiden Key Identifier stimmen überein und besagen das das Zertifikat durch die CA zu der das andere Zertifikat gehört signiert worden ist. \\ | ||
+ | Natürlich hat ein " | ||
+ | |||
+ | |||
+ | ===== Woran erkennt man ein CA-Zertifikat ===== | ||
+ | |||
+ | * das Zertifikat hat eine Basic Constraints Section mit gesetztem CA-Flag: | ||
+ | |||
+ | <sxh> | ||
+ | X509v3 Basic Constraints: | ||
+ | CA:TRUE | ||
+ | </ | ||
+ | |||
+ | * eine Key Usage Section mit " | ||
+ | |||
+ | <sxh> | ||
+ | | ||
+ | Certificate Sign, CRL Sign | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Wie unterscheidet man ein intermediate CA-Zertifikat und ein Root-CA-Zertifikat ===== | ||
+ | |||
+ | * ein Intermediate-Zertifikat hat eine " | ||
+ | * ein Root-CA-Zertifikat hat keine Sektion " | ||
+ | * das kommt daher da das Zertifikat self-signed ist (es gibt ja keine höhere Stelle die es signiert haben könnte) | ||
+ | |||
+ | |||
+ | |||
+ | ====== SHA1 in aktuellen Systemen aktivieren ======= | ||
+ | |||
+ | * SHA1 ist in aktuellen Versionen von OpenSSL per Default deaktiviert als Signing-Algorithmus | ||
+ | * Auch wenn man die entsprechenden Signatur-Algorithmen explizit angibt werden sie in openssl nicht genutzt (bis man unten stehende Option setzt) | ||
+ | * man kann es wahrscheinlich in der openssl.conf systemweit aktivieren | ||
+ | |||
+ | |||
+ | * man kann openssl folgenden Parameter übergeben: | ||
+ | |||
+ | < | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | * viele Programme die openssl benutzen kennen einen Config-Parameter " | ||
+ | * darüber kann man openssl Parameter mitgeben (ohne dafür eine explizite Option zu brauchen) | ||
+ | * im Falle von lighttpd sieht das so aus: | ||
+ | |||
+ | < | ||
+ | ssl.openssl.ssl-conf-cmd=(" | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Bestandteile von Zertifikaten ====== | ||
+ | |||
+ | ^Bestandteil ^Beschreibung ^ | ||
+ | |CN| Common Name - URL des Systems für die das Zertifikat ausgestellt wurde. \\ Neuere Zertifikate sollten den Namen in diesem Feld noch mal im SAN stehen haben. \\ Beim Vorhandensein von SAN werden nur die SAN ausgewertet, | ||
+ | |SAN|Subject Alternative Name \\ \\ Eigentlich zusätzliche " | ||
+ | |||
+ | |||
+ | ====== Was muss gesendet werden ====== | ||
+ | |||
+ | * da die Root-CAs auf der Gegenseite schon vorhanden sind brauchen sie nicht gesendet werden (können aber), die Auflösung funktioniert auch ohne | ||
+ | * alle Intermediate-Certifacates + das Host-Certificate müssen gesendet werden | ||
+ | * weil die sind ja nicht auf der Gegenseite vorhanden und die Chain kann sonst nicht aufgebaut werden |