Unterschied zwischen selbstsignierter Zertifizierungsstelle und selbstsigniertem Zertifikat

81

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?

Tempo
quelle

Antworten:

62

Beide Optionen sind gültig, Option 2 ist einfacher.

Option 1 (Einrichten einer eigenen Zertifizierungsstelle) ist vorzuziehen, wenn Sie mehrere Zertifikate benötigen. In einem Unternehmen können Sie Ihre eigene Zertifizierungsstelle einrichten und das Zertifikat dieser Zertifizierungsstelle im Stammschlüsselspeicher aller Clients installieren. Diese Clients akzeptieren dann alle von Ihrer Zertifizierungsstelle signierten Zertifikate.

Option 2 (Selbstsignieren eines Zertifikats ohne Zertifizierungsstelle) ist einfacher. Wenn Sie nur ein einziges Zertifikat benötigen, ist dies ausreichend. Installieren Sie es in den Keystores Ihrer Clients und Sie sind fertig. Wenn Sie jedoch ein zweites Zertifikat benötigen, müssen Sie dieses auf allen Clients erneut installieren.

Hier ist ein Link mit weiteren Informationen: Erstellen von Zertifizierungsstellen und selbstsignierten SSL-Zertifikaten

Helge Klein
quelle
Wenn eine Zertifizierungsstelle ein Zertifikat signiert, kann ich dem generierten Zertifikat ( in diesem Fall C ) immer noch einzeln vertrauen , da ich weiß, dass ich nur jedem generierten Zertifikat vertrauen muss und nicht dem einen Zertifikat, das von der Zertifizierungsstelle stammt?
ivandov
65

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 '

Bruno
quelle
1
Danke für die Auskunft. Ich werde Helge die richtige Antwort geben, da sie früher kam und kürzer war. Das war jedoch gut zu wissen.
Pace
8

Sie können openssl x509 -noout -text -in $YOUR_CERTdie Unterschiede zwischen den Dateiinhalten sehen:

In Ihrer selbstsignierten Zertifizierungsstelle sehen Sie:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:TRUE, pathlen:0

In Ihrem selbstsignierten Zertifikat heißt es:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE
toksea
quelle
0

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.

ewanm89
quelle