J'obtiens l'erreur suivante de openssl req
:
unable to find 'distinguished_name' in config
problems making Certificate Request
41035:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/conf/conf_lib.c:329:group=req name=distinguished_name
Je crois comprendre que cela est le « sujet » qu'il ne peut pas trouver ... mais je suis en précisant que:
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=ACME, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
La seule suggestion du manuel est que le fichier de configuration n'existe pas; Je peux cat "$OPTIONS_FILE"
, donc c'est définitivement là, et l'erreur n'est pas précédée de l'erreur dans le manuel, elle serait précédée si c'était le cas, donc je suis sûr de openssl
voir le fichier de configuration.
Mon fichier de configuration contient les éléments suivants:
[req]
req_extensions = v3_req
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.example.com
… Qui est à peu près littéralement l'exemple dans les documents .
Qu'est-ce que je fais mal ici?
*.*.example.com
n'est pas valide. (Vous ne pouvez en avoir qu'un*
, et uniquement dans le composant le plus à gauche.) Cela ne concerne pas le problème ici, mais ne c / p aveuglément.Réponses:
Autant que je sache ,
-config
remplace une sorte de configuration interne; si vous voyez la section "EXEMPLES" de la page de manuel pour la demande openssl , elle montre un exemple de fichier de configuration avecdistinguished_name
. Sur une intuition, j'ai ajouté ce qui suit à ma configuration:Ainsi, ma configuration entière ressemblait à quelque chose comme
(Notez qu'ici,
${DOMAIN}
n'est pas littéral; vous devez le remplacer par votre nom de domaine DNS; je crée ce fichier dans unbash
script aveccat >"$OPTIONS_FILE" <<EOF
, suivi de ce qui précède, suivi deEOF
)openssl req … -subj <my subject> -config <that file> …
puis a pris mon sujet depuis la ligne de commande. Pour ceux qui sont intéressés, la commande entière a fini par ressembler à:D'après cette publication, je crois comprendre que SHA-1 est obsolète¹ pour les certificats X.509, donc
-sha256
(qui est un indicateur non documenté…), et subjectAltName devient obligatoire², d'où la nécessité de la configuration. Le seul problème supplémentaire que je connaisse afin de générer une CSR conforme aux meilleures pratiques ci-dessus est que vous devez utiliser une taille de clé RSA d'au moins 2048 bits (si vous utilisez RSA, ce que je suis); vous devez spécifier la taille de laopenssl genrsa
commande car la valeur par défaut actuelle n'est pas sécurisée.¹Bien qu'il ne soit pas cassé au moment où j'écris ceci, les gens pensent que ce n'est qu'une question de temps. Voir "
Suppression progressive de SHA1" ²L'utilisation du CN pour le nom de domaine n'est plus recommandée; Je ne sais pas quand / si les navigateurs prévoient de déprécier cela. «Éloignez-vous de l'inclusion et de la vérification des chaînes qui ressemblent à des noms de domaine dans le nom commun du sujet.», RFC 6125
Remarque: Je suis moins certain de la valeur «correcte» de
keyUsage
.la source
*.*.example.com
n'est pas valide (vous ne pouvez pas avoir plusieurs*
s); c / p-ers méfiez-vous.req_distinguished_name
n'est pas acceptée par openssl 1.1.0f, vous devez donc en avoir au moinscountryName_default
là (voir Opensl.conf Walkthru ).J'ai eu le même problème et j'ai trouvé la réponse ici:
https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/
Le fichier de configuration ressemble à ceci:
Et alors:
la source
req_distinguished_name
section peut être laissée en blanc. Ce qu'il fait, c'est de spécifier le modèle d'étiquettes des noms de champs requis, qui peuvent être écrasés par-subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xx
etc., c'est de ne pas assigner ces valeurs de champs.Pour moi, cette erreur semble être causée par une création de chemin incorrecte lors de l'exécution de la commande dans Windows Server 2012,
C:\OpenSSL-Win32\bin
qui génère une erreur non bloquante avant de demander le passage phare:
De toute évidence, le chemin n'est pas valide en raison de la mauvaise barre oblique, donc le fichier de configuration doit être explicitement ajouté dans la ligne de commande:
la source
Cette erreur similaire:
(Ubuntu 17.04) signifiait "vous devez ajouter
-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"
à la ligne de commande "FWIW.
la source
Un autre problème possible peut être des caractères UTF-8 spéciaux (invisibles). Vérifiez votre fichier à l'aide de
la source