Ist es möglich, die Verwendung eines Stammzertifikats auf eine Domäne zu beschränken?

Ist es möglich, die Verwendung eines Stammzertifikats auf eine Domäne zu beschränken?

Mein Kunde verwendet ein selbst signiertes Zertifikat, damit eine Anwendung funktioniert. Damit dies funktioniert, muss ich das Stammzertifikat installieren, mit dem er das Zertifikat signiert hat.

Ist es möglich, ein Stammzertifikat so zu konfigurieren, dass es nur für eine Domäne gültig ist?

Antwort1

Als Faustregel gilt:

NEIN, mit dem Vertrauen in das CA-Zertifikat des Kunden ist das Vertrauen in jedes von dieser CA signierte Zertifikat verbunden.

Mir sind keine Anwendungen/Bibliotheken bekannt, die über eine einfache Option verfügen, mit der Sie als Endbenutzer auswählen können, dass Sie den Zertifikaten Ihrer Kunden oder anderer Zertifizierungsstellen nur für bestimmte (Unter-)Domänen vertrauen, d. h. nur für *.example.com und *.example.org und sonst nichts.

Mozilla hat ähnliche Bedenken hinsichtlich der derzeit vertrauenswürdigen, staatlich geförderten CAs alsoffener Aufmerksamkeitspunktund zum BeispielChromverfügt über zusätzliche integrierte Prüfungen für den Zugriff auf Google-Sites. So wurden das betrügerische *.google.com-Zertifikat und die Kompromittierung der Diginotar CA öffentlich.

Aber auch wenn Sie der Zertifizierungsstelle nicht vertrauen, können Sie dennoch ein bestimmtes, von dieser Zertifizierungsstelle signiertes Serverzertifikat importieren/ihm vertrauen. Dadurch werden SSL-Warnungen für die Hostnamen in diesem Zertifikat vermieden. Damit sollte Ihre Anwendung ohne Fehler oder Beanstandungen funktionieren.

Ausnahmen:

Eine sehr wenig genutzte Option des X.509v3 PKI-Standards ist dieNamensbeschränkungenErweiterung, die es einem CA-Zertifikat ermöglicht, Whitelists und Blacklists von Domänennamenmustern zu enthalten, für die es autorisiert ist, Zertifikate auszustellen.

Vielleicht haben Sie Glück und Ihr Kunde hat sich beim Einrichten seiner PKI-Infrastruktur zurückgehalten und diese Namensbeschränkung in sein CA-Zertifikat aufgenommen. Dann können Sie sein CA-Zertifikat direkt importieren und wissen, dass es nur einen begrenzten Bereich von Domänennamen validieren kann.

Antwort2

@CryptoGuy hatte hier eine ziemlich gute Antwort, aber ich wollte sie erweitern.

Umschreiben:

Sie können die Zertifizierungsstelle eines Drittanbieters darauf beschränken, Zertifikaten (von dieser Zertifizierungsstelle) zu vertrauen, die an eine von Ihnen gewünschte Namensliste ausgestellt wurden. Selbst wenn die Zertifizierungsstelle eines Drittanbieters keine Namensbeschränkungserweiterung hat, ist es möglich, diese anzuwenden, indem Sie Ihren eigenen internen Zertifizierungsstellenserver über eine Kreuzzertifizierung verwenden. Der Trick besteht darin, dass Sie die Zertifizierungsstelle eines Drittanbieters unter Verwendung Ihrer internen Zertifizierungsstelle signieren.

Blatt-SSL-Zertifikat -> Kreuzzertifikat -> Ihr CA-Zertifikat -> Ihr internes Stammzertifikat.

Und so funktioniert es (mithilfe der OpenSSL-Befehlszeilenzertifizierungsstelle)

Erstellen einer einfachen Zertifizierungsstelle

openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"

Erstellen Sie entweder eine Zwischenzertifizierungsstelle …

Erstellen Sie eine vorläufige CA-Anforderung mit Namensbeschränkungen.

openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg

Mit diesem in der ossl_domain_com.cfgDatei:

[ req ]
prompt=no
distinguished_name=req_distinguished_name
req_extensions=domain_ca

[ req_distinguished_name ]
CN=somedomain.com trust CA

[ domain_ca ]
basicConstraints=critical,CA:true,pathlen:1
nameConstraints=critical,permitted;DNS:.somedomain.com

Signieren Sie dann diese Zwischendomänen-CA mit Ihrer CA.

openssl x509 -req -in domain-ca.req -CA root-ca.crt -CAkey root-ca.key -sha256 -set_serial 1 -out domain-ca.crt -extensions domain_ca -extfile ossl_domain_com.cfg

…oder signieren Sie erneut bei Ihrer Stammzertifizierungsstelle

Wenn Sie die Erstellung des Zwischenzertifikats übersprungen haben, verwenden Sie zum Signieren Ihre Stammzertifizierungsstelle. Signieren Sie die Zertifizierungsstelle der ursprünglichen Domäne erneut unter Ihrer Autorität, indem Sie deren Zertifikat verwenden. Sie können die CA-Erweiterungen hier hinzufügen.

openssl x509 -in third_party_ca.crt -CA domain-ca.crt -CAkey domain-ca.key -set_serial 47 -sha256 -extensions domain_ca -extfile ossl_domain_com.cfg -out domain-cross-ca.crt

Möglicherweise müssen Sie es verwenden, openssl x509 -x509torequm eine Anfrage zu erstellen, die Sie auf genau dieselbe Weise signieren würden wie das oben genannte Zwischenprodukt.

Fügen Sie nun Ihre Stammzertifizierungsstelle, Zwischenzertifizierungsstelle und die domänenübergreifende Zertifizierungsstelle zur Vertrauensdatenbank Ihres Browsers hinzu.

verwandte Informationen