Impossible de charger les informations de configuration à partir de /usr/local/ssl/openssl.cnf sous Windows


184

Lors de l'utilisation d'OpenSSL sous Windows:

openssl genrsa -out privatekey.pem 1024 -->

Créé avec succès

openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 
---->

Affichage du message d'erreur comme

impossible de charger les informations de configuration depuis /usr/local/ssl/openssl.cnf


4
Toutes les réponses montrent que d'une manière ou d'une autre, il faut référencer le fichier de configuration openssl.cnf .. MAIS personne ne mentionne quel fichier de configuration, ?? qui le crée, ?? quel est son contenu?
joedotnot

Réponses:


171

Après avoir installé OpenSSL, je devais créer une nouvelle variable d'environnement:

  • Nom: OPENSSL_CONF
  • Valeur: C:\Program Files\OpenSSL\openssl.cnf

Dans PowerShell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL\openssl.cnf"

Cette valeur diffère des versions d'installation précédentes (comme vu dans une précédente édition de ce post). N'oubliez pas non plus d'ajouter le dossier binaire openssl ${env:ProgramFiles}\OpenSSLà votre chemin.


16
Sur la version 1.0.1j, j'ai dû utiliser à la C:\OpenSSL-Win32\bin\openssl.cfgplace.
Kevin Panko

7
Ou C: \ OpenSSL-Win64 \ bin \ openssl.cfg dans les systèmes 64bits
borjab

13
Ou C:\Program Files (x86)\Git\ssl\openssl.cfgpour ceux qui ont déjà git.
kspearrin

où / comment définissez-vous cette valeur?
matthew_360

Cela le placerait dans l'environnement de démarrage de votre utilisateur:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
Ross Presser

78

Vous devez spécifier le chemin absolu vers la configuration, quelque chose comme ceci:

openssl req -x509 -config "C:\OpenSSL-Win64\bin\openssl.cnf" ...

36
-config C: \ OpenSSL-Win64 \ bin \ openssl.cnf
TimK

4
Dans la version 1.0.1e téléchargée depuis slproweb.com/products/Win32OpenSSL.html , seul le fichier est openssl.cfgprésent dans le répertoire bin après l'installation. Mais avec ce fichier, cela semble fonctionner de toute façon.
vanje

9
Si vous utilisez l'OpenSSL fourni avec Git, vous pouvez essayer-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B

2
openssl: Erreur: «-config» est une commande non valide. comment le définissez-vous?
benez

1
@kewlbfy voir la réponse de @Kosar ci-dessous pour savoir où utiliser le -configdrapeau, cela a fonctionné pour moi
danjah

36

Dans Windows 10, pas besoin de redémarrer ni d'exécuter en mode administrateur, mais définissez plutôt la configuration openssl comme suit:

set OPENSSL_CONF=C:\Program Files (x86)\GnuWin32\share\openssl.cnf

Bien sûr, si vous utilisez GnuWin32


20

Sous Windows, [ Scénario similaire ]

J'étais confronté au même problème, mais c'était lors de la demande de demande de signature de certificat.

J'ai fait ce qui suit, cela a fonctionné pour moi.

Une fois OpenSSL installé, l'invite de commande Ran en tant qu'administrateur après le redémarrage du système. [Pour le mieux, j'ai fait les deux .. exécuter en tant qu'administrateur et redémarrer le système]

fait, 1. [Cas d'erreur]

C:\OpenSSL-Win64\bin>openssl req -new -key server.key -out server.csr

AVERTISSEMENT: impossible d'ouvrir le fichier de configuration: C: \ OpenSSL-Win64 \ bin \ openssl.cnf ET Impossible de charger les informations de configuration à partir de C: \ OpenSSL-Win64 \ bin \ openssl.cnf

2. [A travaillé avec avertissement]

C:\OpenSSL-Win64\bin> openssl req -new -key server.key -out server.csr -config C:\OpenSSL-Win64\bin\openssl.cfg

[Message d'avertissement]: AVERTISSEMENT: impossible d'ouvrir le fichier de configuration: C: \ OpenSSL-Win64 \ bin \ openssl.cnf

Mais m'a demandé la phrase de passe pour server.key Cela a fonctionné pour moi.

J'ai référé, Ce lien pour mon aide.

Je vous remercie.


Merci, le lien que vous avez fourni m'a beaucoup aidé: akadia.com/services/ssh_test_certificate.html
leole

15

La seule chose qui a fonctionné pour moi dans cette situation était le fichier openssl.cnf auto-créé .

Voici les bases nécessaires pour cet exercice (modifiez-les si nécessaire):

#
# OpenSSL configuration file.
#

# Establish working directory.

dir                         = .

[ ca ]
default_ca                  = CA_default

[ CA_default ]
serial                      = $dir/serial
database                    = $dir/certindex.txt
new_certs_dir               = $dir/certs
certificate                 = $dir/cacert.pem
private_key                 = $dir/private/cakey.pem
default_days                = 365
default_md                  = md5
preserve                    = no
email_in_dn                 = no
nameopt                     = default_ca
certopt                     = default_ca
policy                      = policy_match

[ policy_match ]
countryName                 = match
stateOrProvinceName         = match
organizationName            = match
organizationalUnitName      = optional
commonName                  = supplied
emailAddress                = optional

[ req ]
default_bits                = 1024          # Size of keys
default_keyfile             = key.pem       # name of generated keys
default_md                  = md5               # message digest algorithm
string_mask                 = nombstr       # permitted characters
distinguished_name          = req_distinguished_name
req_extensions              = v3_req

[ req_distinguished_name ]
# Variable name             Prompt string
#-------------------------    ----------------------------------
0.organizationName          = Organization Name (company)
organizationalUnitName      = Organizational Unit Name (department, division)
emailAddress                = Email Address
emailAddress_max            = 40
localityName                = Locality Name (city, district)
stateOrProvinceName         = State or Province Name (full name)
countryName                 = Country Name (2 letter code)
countryName_min             = 2
countryName_max             = 2
commonName                  = Common Name (hostname, IP, or your name)
commonName_max              = 64

# Default values for the above, for consistency and less typing.
# Variable name             Value
#------------------------     ------------------------------
0.organizationName_default  = My Company
localityName_default        = My Town
stateOrProvinceName_default = State or Providence
countryName_default         = US

[ v3_ca ]
basicConstraints            = CA:TRUE
subjectKeyIdentifier        = hash
authorityKeyIdentifier      = keyid:always,issuer:always

[ v3_req ]
basicConstraints            = CA:FALSE
subjectKeyIdentifier        = hash

J'espère que cela aide.


1
Après avoir essayé toutes les autres solutions répertoriées ici, celle-ci a fonctionné pour moi. Une fois la configuration créée (dans le répertoire openssl.exe), vous pouvez ensuite exécuteropenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo

12

Après avoir installé OpenSSL, vous devez redémarrer votre ordinateur et utiliser Run As Administrator. Puis ses œuvres.


11

Avec les outils GnuWin32, j'ai trouvé le openssl.cnf sous C: \ gnuwin32 \ share

set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf

9

Pour moi sur Windows 8, j'ai simplement trouvé le fichier openssl.cnf et je l'ai copié sur le lecteur C. puis:

openssl req -new -key server.key -out server.csr -config C:\openssl.cnf

A parfaitement fonctionné.


6

Dans Windows 7, je n'ai pas eu à redémarrer, exécutez simplement l'invite de commande en mode administrateur.


4

Dans mon cas, je dois définir manuellement le chemin du fichier openssl.cnf sur la commande à l'aide de l' configoption. Donc la commande

openssl req -x509 -config "C:\Users\sk\Downloads\openssl-0.9.8k_X64\openssl.cnf" -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes -days 900

3

Si vous utilisez Win32 OpenSSL v1.1.0g , configurez cette variable d'environnement:

set OPENSSL_CONF=C:\OpenSSL-Win32\bin\cnf\openssl.cnf

Avant d'exécuter cette commande avec "server.key" , création réussie de "server.csr" :

openssl req -new -key server.key -out server.csr

1

Sur la question fondamentale de savoir pourquoi openssl n'est pas trouvé: Réponse courte: Certains packages d'installation pour openssl ont un openssl.cnf par défaut pré-inclus. Les autres packages ne le font pas. Dans ce dernier cas, vous en inclurez un à partir du lien ci-dessous; Vous pouvez saisir des informations spécifiques à l'utilisateur supplémentaires - nom DN, etc. - si nécessaire.

De https://www.openssl.org/docs/manmaster/man5/config.html, je cite directement:

"CONFIGURATION DE LA BIBLIOTHEQUE OPENSSL

Les applications peuvent configurer automatiquement certains aspects d'OpenSSL en utilisant le fichier de configuration OpenSSL principal, ou éventuellement un autre fichier de configuration. L'utilitaire openssl inclut cette fonctionnalité: toute sous-commande utilise le fichier de configuration OpenSSL principal, sauf si une option est utilisée dans la sous-commande pour utiliser un autre fichier de configuration.

Pour activer la configuration de la bibliothèque, la section par défaut doit contenir une ligne appropriée qui pointe vers la section de configuration principale. Le nom par défaut est openssl_conf qui est utilisé par l'utilitaire openssl. D'autres applications peuvent utiliser un nom alternatif tel que myapplication_conf. Toutes les lignes de configuration de la bibliothèque apparaissent dans la section par défaut au début du fichier de configuration.

La section de configuration doit être constituée d'un ensemble de paires de valeurs de nom contenant des informations de configuration de module spécifiques. Le nom représente le nom du module de configuration. La signification de la valeur est spécifique au module: elle peut, par exemple, représenter une autre section de configuration contenant des informations spécifiques au module de configuration. Par exemple:"

Il semble donc que l'on doive configurer automatiquement openssl.cnf en fonction de votre nom distinctif (DN), ainsi que d'autres entrées spécifiques à votre utilisation.

Voici le fichier modèle à partir duquel vous pouvez générer openssl.cnf avec vos entrées spécifiques.

Une application a en fait une installation de démonstration qui comprend un fichier de démonstration .cnf.

De plus, si vous devez accéder par programme aux fichiers .cnf, vous pouvez inclure les en-têtes appropriés --openssl / conf.h-- et analyser vos fichiers .cnf à l'aide de

CONF_modules_load_file(const char *filename, const char *appname,
                            unsigned long flags);

Voici la documentation pour "CONF_modules_load_file";


0

Pour moi, mettre une variable avant d'appeler a fait l'affaire:

OPENSSL_CONF=/usr/ssl/openssl.cnf openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365

0

Sur Windows PowerShell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.