it-swarm.com.de

OpenSSL Basic Constraints

Ich habe das Buch ' Planning for PKI ' durchgearbeitet und bin an dem Punkt angelangt, an dem ich ein End-Entity-Zertifikat erstellen möchte. Es wird jedoch eine Fehlermeldung angezeigt, die besagt, dass das Zertifikat Erweiterungsfehler enthält. Ich wurde von meinem Lehrer angeleitet, genau zu untersuchen, wie die grundlegende Einschränkungserweiterung geändert werden kann, um dieses Problem zu beheben.

Das Buch rät von der Verwendung der Basic Constraint-Erweiterung in Endentitätszertifikaten ab. Wenn ich es jedoch einfach lösche, wird eine Standarderweiterung von "CA:TRUE "wird trotzdem eingefügt.

Meine Fragen sind also:

  1. Gibt es eine Möglichkeit, diese automatische Einfügung zu überschreiben, oder habe ich das Buch falsch verstanden?
  2. Irgendwelche Ideen, was ich falsch machen könnte?

Das Folgende ist die Erweiterung, mit der ich das Zertifikat erstellt habe:

[ server_ext ]
basicConstraints        = critical,CA:false
nsCertType              = server
subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid,issuer:always
keyUsage                = critical,digitalSignature,keyEncipherment
extendedKeyUsage        = serverAuth
5
MPol

Ich habe es geschafft, die Standardfunktionalität zu überschreiben, die die grundlegende Einschränkung enthielt, als sie in der Erweiterung fehlte. Dies hatte mit dem Attribut csr und copy extensions in der Datei openssl.cnf zu tun.

1
MPol

Ich vermute, dass die openSSL-Manpages hilfreich sein könnten:

Wenn die Erweiterung basicConstraints nicht vorhanden ist, wird das Zertifikat als "mögliche Zertifizierungsstelle" betrachtet. Andere Erweiterungen werden entsprechend der beabsichtigten Verwendung des Zertifikats überprüft. In diesem Fall wird eine Warnung ausgegeben, da das Zertifikat eigentlich nicht als Zertifizierungsstelle angesehen werden sollte. Es darf jedoch eine Zertifizierungsstelle sein, um fehlerhafte Software zu umgehen.

d.h. die KeyUsage/ExtendedKeyUsage würde (wie es scheint) verwendet, um zu raten.

Entnommen aus https://www.openssl.org/docs/manmaster/man1/x509.html , Abschnitt "Zertifikatserweiterungen".

Dies scheint (für mich) anders zu sein als das, was das openssl-Kochbuch sagt ( https://www.feistyduck.com/library/openssl-cookbook/online/ch-openssl.html ):

Die Erweiterung Basic Constraints wird verwendet, um Zertifikate als zu einer Zertifizierungsstelle gehörend zu kennzeichnen und ihnen die Möglichkeit zu geben, andere Zertifikate zu signieren. Bei Nicht-CA-Zertifikaten wird diese Erweiterung entweder weggelassen oder der Wert von CA wird auf FALSE gesetzt. Diese Erweiterung ist kritisch, was bedeutet, dass alle Software-verbrauchenden Zertifikate ihre Bedeutung verstehen müssen.

Wenn Sie die Manpage auf x509v3_config überprüfen ( https://www.openssl.org/docs/manmaster/man5/x509v3_config.html - siehe Abschnitt Standarderweiterungen), ist ein mögliches Problem Ihre Syntax.

Sie geben als Beispiele Folgendes an:

basicConstraints=CA:TRUE

basicConstraints=CA:FALSE

basicConstraints=critical,CA:TRUE, pathlen:0

Sie bieten eine zusätzliche Möglichkeit, ähnliche Ergebnisse zu erzielen:

basicConstraints=critical,@bs_section

[bs_section]

CA=true
pathlen=1

Ich würde nur Ihre Konfiguration ändern, um zu lesen:

basicConstraints=CA:FALSE

Anstelle von:

basicConstraints = critical,CA:false

Auf diese Weise ist Ihr Profil explizit und sollte alle anderen (möglicherweise entgegengesetzten) Konfigurationen überschreiben, die an anderer Stelle angewendet werden.

1