Qu'est-ce qui provoque un avertissement sur les contraintes de base d'un certificat?

8

J'ai créé un certificat de serveur auto-signé en utilisant la req -x509commande d'OpenSSL et un fichier CONF. Le fichier CONF est illustré ci-dessous.

Lorsque j'examine le certificat à l'aide de la visionneuse de certificats Microsoft, il affiche un avertissement basicConstraints(remarquez le petit point d'exclamation):

entrez la description de l'image ici

Le fichier CONF utilise les éléments suivants pour créer basicConstraints:

basicConstraints = critical,CA:FALSE

Selon RFC 5280 , le pathLenne devrait être présent si CA:TRUEet keyCertSignest présent. Le certificat du serveur ne remplit aucune de ces conditions (plus, les tests avec ont pathLenabouti au même avertissement).

Pourquoi l'avertissement de l'outil de certificat Microsoft est-il activé basicConstraints? Qu'est-ce qui ne va pas ou que dois-je faire pour y remédier?


# Self Signed (note the addition of -x509):
#     openssl req -config example.conf -new -x509 -sha256 -newkey rsa:2048 -nodes -keyout example.key.pem -days 365 -out example.cert.pem

# Self Signed with existing key (note the addition of -x509):
#     openssl req -config example.conf -new -x509 -sha256 -key example.key.pem -days 365 -out example.cert.pem

# Signing Request (note the lack of -x509):
#     openssl req -config example.conf -new -newkey rsa:2048 -nodes -keyout example.key.pem -days 365 -out example.req.pem

# Signing Request with existing key (note the lack of -x509):
#     openssl req -config example.conf -new -key example.key.pem -days 365 -out example.req.pem

# Print it:
#     openssl x509 -in example.cert.pem -text -noout
#     openssl req -in example.req.pem -text -noout

[ req ]
default_bits        = 2048
default_keyfile     = server-key.pem
distinguished_name  = subject
req_extensions      = req_ext
x509_extensions     = x509_ext
string_mask         = utf8only

# The Subject DN can be formed using X501 or RFC 4514 (see RFC 4519 for a description).
#   Its sort of a mashup. For example, RFC 4514 does not provide emailAddress.
[ subject ]
countryName         = Country Name (2 letter code)
countryName_default     = US

stateOrProvinceName     = State or Province Name (full name)
stateOrProvinceName_default = MD

localityName            = Locality Name (eg, city)
localityName_default        = Baltimore

organizationName         = Organization Name (eg, company)
organizationName_default    =

# Use a friendly name here because its presented to the user. The server's DNS
#   names are placed in Subject Alternate Names. Plus, DNS names here is deprecated
#   by both IETF and CA/Browser Forums.
commonName          = Common Name (e.g. server FQDN or YOUR name)
commonName_default      = Example, LLC

emailAddress            = Email Address
emailAddress_default        = [email protected]

# Section x509_ext is used when generating a self-signed certificate. I.e., openssl req -x509 ...
[ x509_ext ]

subjectKeyIdentifier        = hash
authorityKeyIdentifier  = keyid,issuer

basicConstraints        = critical,CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

# RFC 5280, Section 4.2.1.12 makes EKU optional
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
extendedKeyUsage    = serverAuth

# Section req_ext is used when generating a certificate signing request. I.e., openssl req ...
[ req_ext ]

subjectKeyIdentifier        = hash

basicConstraints        = critical,CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName          = @alternate_names
nsComment           = "OpenSSL Generated Certificate"

# RFC 5280, Section 4.2.1.12 makes EKU optional
# CA/Browser Baseline Requirements, Appendix (B)(3)(G) makes me confused
extendedKeyUsage    = serverAuth

[ alternate_names ]

DNS.1       = example.com
DNS.2       = www.example.com
DNS.3       = mail.example.com
DNS.4       = ftp.example.com

# Add these if you need them. But usually you don't want them or
#   need them in production. You may need them for development.
# DNS.5       = localhost
# DNS.6       = localhost.localdomain
# DNS.7       = 127.0.0.1

# IPv6 localhost
# DNS.8     = ::1
jww
la source

Réponses:

6

Le petit triangle jaune avec un point d'exclamation est là pour vous dire que l'extension est marquée comme critique. Pour se débarrasser de l'icône, supprimez le verbe «critique» de la configuration OpenSSL.

En outre, il n'est pas nécessaire de marquer les certificats d'entité finale avec une contrainte de base dans laquelle le cAbooléen est défini sur false car cela est implicite dans tous les certificats dans lesquels il n'est pas défini sur true. Ce n'est pas une violation de l'avoir là-bas; mais ce n'est pas nécessaire.

garethTheRed
la source