Gibt es eine Möglichkeit, das explizite Hinzufügen von B's Cert zu E's CA-Speicher zu vermeiden?
Der übliche Weg besteht darin, alle Zwischenzertifikate zusammen mit dem Blattzertifikat innerhalb des TLS-Handshakes zu senden. Zum Beispiel, wenn Sie eine Verbindung zu google.com Sie folgende Zertifikatskette vom Server innerhalb des TLS-Handshake zur Verfügung gestellt bekommen:
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
die Zwischenzertifikate Unter Verwendung von (1,2), dann kann der Kunde die Vertrauenskette von der bauen Blatt-Zertifikat (0) bis zur lokal gespeicherten vertrauenswürdigen CA (in diesem Fall).
Natürlich können Sie auch die Zwischenzertifikate als vertrauenswürdig in den Clients hinzufügen. Aber da es viel mehr gibt, die sich auch häufiger ändern als die vertrauenswürdigen Stammzertifikate, würden Sie etwas mehr Speicher benötigen, aber Sie würden Ihre Clients auch regelmäßig mit den neuen Zwischenzertifikaten aktualisieren.
mit openssl, gibt es die Möglichkeit, den Abruf von B's Cert entweder vom Client oder einer anderen Quelle (vielleicht ein Feld wie IssuerDistributionPoint in D-Zertifikat) zu automatisieren?
openssl bietet keine spezifischen Werkzeuge, um damit umzugehen. Der Desktop-Browser Google Chrome versucht tatsächlich, fehlende Zwischenzertifikate aus dem Internet herunterzuladen, wahrscheinlich basierend auf den Informationen im Abschnitt Authority Information Access des Zertifikats. Aber ich bin mir nicht bewusst, dass andere Browser (abgesehen von anderen Chromium-Derivaten wie Opera) dies tun.
Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen. Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Information Security Stack Exchange] (http://security.stackexchange.com/) wäre ein besserer Ort zu fragen. Auch [Wo veröffentliche ich Fragen zu Dev Ops?] (Http://meta.stackexchange.com/q/134306). – jww
*** "E" *** (oder *** "C" ***) kann nicht in einem Pfad verwendet werden, um das *** D-Zertifikat zu verifizieren. Siehe auch [RFC 4158, Internet X.509 Public Key Infrastructure: Erstellung von Zertifizierungspfaden] (http://tools.ietf.org/html/rfc4158). – jww