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

Karthik
la source
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.

lame_coder
la source
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" ...
zombi_man
la source
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

Perle noire
la source
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.

mavis
la source
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.

simhumileco
la source
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.

Karthik
la source
11

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

set OPENSSL_CONF=C:\gnuwin32\share\openssl.cnf
TL
la source
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é.

Ali
la source
6

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

Calgary libertaire
la source
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
Sunil Garg
la source
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
5 serviteur
la source
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";

amour du code
la source
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
VoloshinS
la source
0

Sur Windows PowerShell:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
Forgeron
la source