it-swarm.com.de

Unterschied zwischen selbstsignierter Zertifizierungsstelle und selbstsigniertem Zertifikat

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, mit einem Beispiel 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, damit es mir egal ist, mit einer echten Zertifizierungsstelle zu signieren.

Option 1: Eine selbstsignierte Zertifizierungsstelle erstellen (ssCA) und damit ein Zertifikat signieren ( C ). Anschließend installiere ich ssCA im Root-Keystore auf meinem Client und richte meinen Server für die Verwendung von certificate C ein.

Option 2: Selbstsigniertes Zertifikat erstellen ( SSC ). Installieren Sie SSC im Root-Keystore auf meinem Client. Richten Sie meinen Server für die Verwendung von certificate SSC ein.

Die zweite Option scheint ein viel einfacherer Prozess zu sein. Sollte das noch funktionieren?

66
Pace

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

Option 1 (Einrichten Ihrer eigenen Zertifizierungsstelle) ist vorzuziehen, wenn Sie mehrere Zertifikate benötigen. In einem Unternehmen können Sie eine eigene Zertifizierungsstelle einrichten und das Zertifikat dieser Zertifizierungsstelle im Root-Keystore 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

52
Helge Klein

Was erstens die Unterscheidung zwischen Schlüssel und Zertifikat (in Bezug auf "CA-Schlüssel") betrifft, werden drei Teile verwendet, wenn von öffentlichen Schlüsselzertifikaten gesprochen wird (normalerweise X.509): der öffentliche Schlüssel, der private 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 Zertifikat mit öffentlichem Schlüssel ist die Kombination aus 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 Schlüssels signiert wird Zertifikat. Ein X.509-Zertifikat hat einen eindeutigen Antragstellernamen und einen eindeutigen Ausstellernamen. Der Name des Ausstellers ist der Antragstellername des Zertifikats der Stelle, die das Zertifikat ausstellt. Selbstsignierte Zertifikate sind ein Sonderfall, bei dem Aussteller und Betreff identisch sind. Durch das Signieren des Inhalts eines Zertifikats (dh das Ausstellen des Zertifikats) bestätigt der Aussteller seinen Inhalt, insbesondere die Bindung zwischen dem Schlüssel, der Identität (dem Betreff) und den verschiedenen Attributen (die auf die Absicht oder den Umfang der Nutzung für das Zertifikat 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 kann, 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 Zwischenzertifikate (ausgestellt von anderen CA-Zertifikaten). Sie benötigen nicht unbedingt eine Stammzertifizierungsstelle an der Spitze (ein selbstsigniertes CA-Zertifikat), dies ist jedoch häufig der Fall (Sie können einem Zwischenzertifizierungsstellenzertifikat auch direkt vertrauen, wenn Sie dies wünschen).

Wenn Sie für einen bestimmten Dienst ein selbstsigniertes Zertifikat generieren, spielt es für Ihren Anwendungsfall keine Rolle, ob das CA-Flag (Basic Constraints Extension) vorhanden ist. Sie benötigen ein CA-Zertifikat, um andere Zertifikate ausstellen zu können (wenn Sie Ihre eigene PKI erstellen möchten). Wenn das Zertifikat, das Sie für diesen Dienst erstellen, 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 in der Lage sein, das Zertifikat direkt als Teil der Vertrauensanker von zu importieren, da keine Kette (mit nur einem Zertifikat) erstellt werden muss Ihr Client, ob es sich um ein CA-Zertifikat handelt oder nicht (dies kann jedoch vom Konfigurationsmechanismus des Clients abhängen).

58
Bruno

Du kannst openssl x509 -noout -text -in $YOUR_CERT um die Unterschiede zwischen den Dateiinhalten zu sehen:

In Ihrer selbstsignierten Zertifizierungsstelle sehen Sie:

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

Und in Ihrem selbstsignierten Zertifikat steht:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE
5
toksea

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 das zum Überprüfen der niedrigeren Zertifikate verwendet wird sind gültig. Selbstsigniert bedeutet nur, dass Sie Ihre eigene Zertifizierungsstelle sind. Wenn Sie ein selbstsigniertes Zertifikat erstellen, erstellen Sie eine Zertifizierungsstelle und signieren dann ein Site-Zertifikat mit dieser Zertifizierungsstelle.

1
ewanm89