11 votes

Qu'est-ce qui provoque un avertissement sur les basicConstraints d'un certificat?

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

Lorsque j'examine le certificat avec l'outil de visualisation des certificats de Microsoft, il affiche un avertissement sur basicConstraints (remarquez le petit point d'exclamation) :

entrez la description de l'image ici

Le fichier CONF utilise ce qui suit pour construire les basicConstraints :

basicConstraints = critical,CA:FALSE

Conformément à la RFC 5280, le pathLen ne devrait être présent que si CA:TRUE et keyCertSign sont présents. Le certificat du serveur ne remplit aucune de ces conditions (en plus, un test avec pathLen a entraîné le même avertissement).

Pourquoi l'outil de certificat Microsoft émet-il un avertissement sur basicConstraints ? Qu'est-ce qui ne va pas avec cela ou que devrais-je faire pour le corriger ?


# Auto-signé (remarquez l'ajout de -x509) :
#     openssl req -config example.conf -new -x509 -sha256 -newkey rsa:2048 -nodes -keyout example.key.pem -days 365 -out example.cert.pem

# Auto-signé avec une clé existante (remarquez l'ajout de -x509) :
#     openssl req -config example.conf -new -x509 -sha256 -key example.key.pem -days 365 -out example.cert.pem

# Requête de signature (remarquez l'absence de -x509) :
#     openssl req -config example.conf -new -newkey rsa:2048 -nodes -keyout example.key.pem -days 365 -out example.req.pem

# Requête de signature avec une clé existante (remarquez l'absence de -x509) :
#     openssl req -config example.conf -new -key example.key.pem -days 365 -out example.req.pem

# Affichez-le :
#     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

# Le DN du sujet peut être formé à l'aide de X501 ou RFC 4514 (voir RFC 4519 pour une description).
#   C'est une sorte de mashup. Par exemple, RFC 4514 ne fournit pas d'adresse e-mail.
[ subject ]
countryName         = Nom du pays (code à 2 lettres)
countryName_default     = US

stateOrProvinceName     = Nom de l'État ou de la province (nom complet)
stateOrProvinceName_default = MD

localityName            = Nom de la localité (par ex., ville)
localityName_default        = Baltimore

organizationName         = Nom de l'organisation (par ex., entreprise)
organizationName_default    =

# Utilisez un nom convivial ici car il est présenté à l'utilisateur. Les noms DNS du serveur
#   sont placés dans les noms alternatifs de sujet. De plus, les noms DNS ici sont obsolètes
#   à la fois par l'IETF et les CA/Browser Forums.
commonName          = Nom commun (par ex., FQDN du serveur ou VOTRE nom)
commonName_default      = Example, LLC

emailAddress            = Adresse e-mail
emailAddress_default        = webmaster@example.com

# La section x509_ext est utilisée lors de la génération d'un certificat auto-signé. C.-à-d., openssl req -x509 ...
[ x509_ext ]

subjectKeyIdentifier        = hash
authorityKeyIdentifier  = keyid,issuer

basicConstraints        = critical,CA:FALSE
keyUsage            = signature numérique, chiffrement de clé
subjectAltName          = @alternate_names
nsComment           = "Certificat généré par OpenSSL"

# La RFC 5280, section 4.2.1.12, rend l'EKU facultatif
# Les exigences de base des navigateurs CA/Browser, Appendice (B)(3)(G) me laissent perplexe
extendedKeyUsage    = serverAuth

# La section req_ext est utilisée lors de la génération d'une demande de signature de certificat. C.-à-d., openssl req ...
[ req_ext ]

subjectKeyIdentifier        = hash

basicConstraints        = critical,CA:FALSE
keyUsage            = signature numérique, chiffrement de clé
subjectAltName          = @alternate_names
nsComment           = "Certificat généré par OpenSSL"

# La RFC 5280, section 4.2.1.12, rend l'EKU facultatif
# Les exigences de base des navigateurs CA/Browser, Appendice (B)(3)(G) me laissent perplexe
extendedKeyUsage    = serverAuth

[ alternate_names ]

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

# Ajoutez-les si vous en avez besoin. Mais vous ne les voulez généralement pas
#   ou vous n'en avez pas besoin en production. Vous pourriez en avoir besoin pour le développement.
# DNS.5       = localhost
# DNS.6       = localhost.localdomain
# DNS.7       = 127.0.0.1

# IPv6 localhost
# DNS.8     = ::1

8voto

Bhabba Points 113

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

De plus, il n'est pas nécessaire de marquer les certificats d'entité finale avec une contrainte de base dans laquelle le cA booléen est défini sur false car cela est implicite dans tous les certificats dans lesquels il n'est pas défini sur true. Il n'est pas une violation de l'avoir là; mais ce n'est pas nécessaire.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X