Der Unterschied zwischen einem CA-Schlüssel und einem Zertifikat ist mir nicht klar. Ist ein CA-Schlüssel nicht einfach ein Zertifikat? Lassen Sie mich versuchen, anhand eines Beispiels zu verdeutlichen.
Ich habe einen Client und einen Server. Ich versuche nur, meine Verbindung zu meinem Server zu überprüfen und kein Vertrauen zu anderen aufzubauen, sodass es mir egal ist, mit einer echten Zertifizierungsstelle zu signieren.
Option 1: Generieren Sie eine selbstsignierte Zertifizierungsstelle ( ssCA ) und signieren Sie damit ein Zertifikat ( C ). Anschließend installiere ich ssCA im Root-Keystore auf meinem Client und richte meinen Server für die Verwendung von Zertifikat C ein .
Option 2: Generieren Sie ein selbstsigniertes Zertifikat ( SSC ). Installieren Sie SSC im Root-Keystore auf meinem Client. Richten Sie meinen Server für die Verwendung des Zertifikats SSC ein .
Die zweite Option scheint ein viel einfacherer Prozess zu sein. Sollte das noch funktionieren?
quelle
Zunächst werden zur Unterscheidung zwischen Schlüssel und Zertifikat (in Bezug auf "CA-Schlüssel") drei Elemente verwendet, wenn es um Zertifikate mit öffentlichem Schlüssel (normalerweise X.509) geht: den öffentlichen Schlüssel, den privaten Schlüssel und das Zertifikat. Der öffentliche Schlüssel und der private Schlüssel bilden ein Paar. Sie können mit dem privaten Schlüssel signieren und entschlüsseln, Sie können (eine Signatur) überprüfen und mit dem öffentlichen Schlüssel verschlüsseln. Der öffentliche Schlüssel soll verteilt werden, während der private Schlüssel privat gehalten werden soll.
Ein Public-Key-Zertifikat ist die Kombination zwischen einem öffentlichen Schlüssel und verschiedenen Informationen (hauptsächlich in Bezug auf die Identität des Eigentümers des Schlüsselpaars, der den privaten Schlüssel kontrolliert), wobei diese Kombination mit dem privaten Schlüssel des Ausstellers des signiert wird Zertifikat. Ein X.509-Zertifikat hat einen Betreff-Namen und einen Aussteller-Namen. Der Name des Ausstellers ist der Antragstellername des Zertifikats der Stelle, die das Zertifikat ausstellt. Selbstsignierte Zertifikate sind ein Sonderfall, bei dem der Emittent und das Subjekt identisch sind. Durch das Signieren des Inhalts eines Zertifikats (dh das Ausstellen des Zertifikats) macht der Aussteller seinen Inhalt geltend, insbesondere die Bindung zwischen dem Schlüssel, der Identität (dem Betreff) und den verschiedenen Attributen (die auf die Absicht oder den Umfang der Verwendung des Zertifikats hinweisen können) Zertifikat).
Darüber hinaus definiert die PKIX-Spezifikation eine Erweiterung (Teil eines bestimmten Zertifikats), die angibt, ob ein Zertifikat als CA-Zertifikat verwendet werden darf, dh ob es als Aussteller für ein anderes Zertifikat verwendet werden kann.
Daraus erstellen Sie eine Kette von Zertifikaten zwischen dem Endentitätszertifikat (das Sie für einen Benutzer oder einen Server überprüfen möchten) und einem CA-Zertifikat, dem Sie vertrauen. Zwischen dem End-Entity-Zertifikat Ihres Dienstes und dem CA-Zertifikat, dem Sie vertrauen, befinden sich möglicherweise CA-Zwischenzertifikate (ausgestellt von anderen CA-Zertifikaten). Sie benötigen nicht unbedingt eine Stammzertifizierungsstelle oben (ein selbstsigniertes Zertifizierungsstellenzertifikat), aber dies ist häufig der Fall (Sie können einem Zwischenzertifizierungsstellenzertifikat direkt vertrauen, wenn Sie dies wünschen).
Wenn Sie für Ihren Anwendungsfall ein selbstsigniertes Zertifikat für einen bestimmten Dienst generieren, spielt es keine Rolle, ob es das CA-Flag (Erweiterung für grundlegende Einschränkungen) hat. Sie benötigen ein CA-Zertifikat, um andere Zertifikate ausstellen zu können (wenn Sie eine eigene PKI erstellen möchten). Wenn das Zertifikat, das Sie für diesen Dienst generieren, ein CA-Zertifikat ist, sollte es keinen Schaden anrichten. Was noch wichtiger ist, ist die Art und Weise, wie Sie Ihren Client so konfigurieren können, dass er diesem Zertifikat für diesen bestimmten Server vertraut (mit Browsern sollten Sie beispielsweise ganz einfach eine explizite Ausnahme machen können). Wenn der Konfigurationsmechanismus einem PKI-Modell folgt (ohne bestimmte Ausnahmen zu verwenden), sollten Sie das Zertifikat direkt als Teil der Vertrauensanker von importieren können, da keine Kette (mit nur einem Zertifikat) erstellt werden muss Ihr Kunde, ob es '
quelle
Sie können
openssl x509 -noout -text -in $YOUR_CERT
die Unterschiede zwischen den Dateiinhalten sehen:In Ihrer selbstsignierten Zertifizierungsstelle sehen Sie:
In Ihrem selbstsignierten Zertifikat heißt es:
quelle
Sie müssen immer über eine Stammzertifizierungsstelle verfügen. Die Zertifizierungsstelle verfügt über einen Schlüssel, mit dem ein Zertifikat niedrigerer Ebene signiert werden kann, und ein Stammzertifikat, das in die akzeptierten Stammzertifikate auf dem Client eingebettet werden kann und zur Überprüfung der unteren Zertifikate verwendet wird, um diese zu überprüfen sind gültig. Selbstsigniert bedeutet nur, dass Sie Ihre eigene Zertifizierungsstelle sind. Wenn Sie ein selbstsigniertes Zertifikat erstellen, erstellen Sie eine CA und signieren dann ein Site-Zertifikat mit dieser Zertifizierungsstelle.
quelle