OpenSSL et erreur de lecture du fichier openssl.conf

119

J'utilise Windows XP 32bit

Je viens de télécharger Openssl à partir de l'URL suivante et de l'installer. http://www.slproweb.com/products/Win32OpenSSL.html

puis j'ai essayé de créer un certificat auto-signé en utilisant la commande suivante

openssl req -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

puis il a commencé à donner l'erreur suivante

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

Ensuite, après avoir cherché sur Google, j'ai changé la commande ci-dessus en

openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

Mais maintenant, j'obtiens l'erreur suivante dans l'invite de commande

erreur sur la ligne -1 de C: \ OpenSSL \ bin \ openssl.conf
4220: erreur: 02001002: bibliothèque système: fopen: aucun fichier ou répertoire de ce type:. \ crypto \ bio \ bss_file.c: 126: fopen ('C: \ OpenSSL \ bin \ openssl.conf ',' rb ') 4220: erreur: 2006D080: routines BIO: BIO_new_file: aucun fichier de ce type:. \ Crypto \ bio \ bss_file.c: 129:
4220: erreur: 0E078072: routines du fichier de configuration : DEF_LOAD: aucun fichier de ce type:. \ Crypto \ conf \ conf_def.c: 197:

Veuillez aider. Merci d'avance.

Sreeram
la source
3
vérifier le nom exact du fichier: openssl.conf ---> openssl.cnf
Mark
2
l'extension de fichier sous Windows est désormais .cfg. Assurez-vous également que le chemin d'accès au fichier spécifié (sur la ligne de commande ou dans la variable d'environnement OPENSSL_CONF) n'est pas entre guillemets.
tatx
L'extension de fichier (.cnf / .cfg) semble varier en fonction de ce qui a été utilisé pour installer OpenSSL. Sur une installation de WampServer v3.2.2, je viens de faire le nom de fichier de configuration était openssl.cnf. J'ai également effectué une installation Window10 64 bits en utilisant les binaires de Shining Path Productions. Le nom de fichier de cette installation était openssl.cfg. Cette différence dans les noms d'extension de fichier de configuration OpenSSL semble dépendre de la compilation. Je n'ai pas encore testé quel nom d'extension est reconnu par OpenSSL v1.1.1g.
Bill Vallance le

Réponses:

141

Sous Windows, vous pouvez également définir la propriété d'environnement OPENSSL_CONF. Par exemple, à partir de la ligne de commande, vous pouvez taper:

set OPENSSL_CONF=c:/libs/openssl-0.9.8k/openssl.cnf

pour le valider, vous pouvez taper:

echo %OPENSSL_CONF%

Vous pouvez également le définir dans le cadre des variables d'environnement de l'ordinateur afin que tous les utilisateurs et services l'aient disponible par défaut. Voir, par exemple, Variables d'environnement dans Windows NT et Comment gérer les variables d'environnement sous Windows XP .

Vous pouvez maintenant exécuter des commandes openssl sans avoir à passer le paramètre d'emplacement de configuration.

dvtoever
la source
9
Merci, travaillé pour moi! (set OPENSSL_CONF = c: \ openssl-win32 \ bin \ openssl.cfg)
Valentin Heinitz
@jww a essayé cela mais il me dit que set est une commande invalide. des idées?
Sarah
3
@Sarah - setest une commande Windows, et elle est destinée à être exécutée à partir de cmd.exe. Cela ne fonctionnera pas sur une machine non Windows. La chose setet echone fonctionne pas non plus dans Power Shell. Vous utiliseriez quelque chose comme $X=1; Write-Output $X.
jww
@jww merci. Je suis sur une machine Windows mais j'utilisais cette commande dans openssl.exe au lieu de cmd.exe .. J'ai lu votre commentaire et suis allé à cmd.exe et j'ai tapé la commande set à la place. Cela fonctionnait correctement mais j'obtenais toujours la même erreur dans openssl.exe en disant "Impossible de charger les informations de configuration à partir de chemin_incorrect / ssl / openssl.cnf" alors j'ai essayé la solution ci-dessous en disant d'ajouter le paramètre -config avec votre répertoire openssl et cela a fonctionné parfaitement. alors je suis content. merci pour l'aide :)
Sarah
Doit être marqué comme réponse. Franchement, cela devrait être inutile aussi. Pourquoi cette distribution OpenSSL Windows n'est-elle pas simplement par défaut PWD par exemple?
stonedauwg
40

Ajoutez simplement à votre ligne de commande le paramètre -config c:\your_openssl_path\openssl.cfg, en changeant your_openssl_pathle chemin d'installation réel.

Nikl
la source
super, j'ai suivi ce billet de blog ajden.towfeek.se/post/… et l'ajout de -config fonctionne aussi pour cygwin, par exemple $ openssl ca -in server.csr -config /etc/ssl/openssl.cnf Mais pourquoi cette -config n'est-elle pas répertoriée dans man openssl? openssl.org/docs/apps/openssl.html
barlop
@nneonneo a essayé ceci et la solution ci-dessus, mais il me dit que set et config sont des commandes invalides. des idées?
Sarah
set ne fonctionne que sur Windows; config n'est pas une commande indépendante (vous l'ajoutez à votre ligne de commande OpenSSL).
nneonneo
29

Créez vous-même un fichier openssl.cnf comme celui-ci à l'étape 4: http://www.flatmtn.com/article/setting-openssl-create-certificates

Modifier après que le lien a cessé de fonctionner Le contenu du fichier openssl.cnf était le suivant:

#
# 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
Sam
la source
1
URL plus trouvée
Greg Domjan
15
set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

prenez soin de la bonne extension ( openssl.cfg pas cnf)!

J'ai installé OpenSSL à partir d'ici: http://slproweb.com/products/Win32OpenSSL.html


la source
Le lien d'installation a aidé, j'ai téléchargé 0.9.8 ailleurs et cela ne fonctionnait pas. Je vous remercie.
EpicPandaForce
14

Si vous avez installé Apache avec OpenSSL, accédez au répertoire bin. Dans mon cas D: \ apache \ bin.

* Ces commandes fonctionnent également si vous avez une installation autonome de openssl.

Exécutez ces commandes:

openssl req -config d:\apache\conf\openssl.cnf -new -out d:\apache\conf\server.csr -keyout d:\apache\conf\server.pem
openssl rsa -in d:\apache\conf\server.pem -out d:\apache\conf\server.key
openssl x509 -in d:\apache\conf\server.csr -out d:\apache\conf\server.crt -req -signkey d:\apache\conf\server.key -days 365

* Cela créera un certificat auto-signé que vous pourrez utiliser à des fins de développement

Encore une fois, si Apache est installé dans le httpd.conf, collez-les:

  <IfModule ssl_module>
    SSLEngine on
    SSLCertificateFile "D:/apache/conf/server.crt"
    SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>
Artur Kędzior
la source
Le type qui a posé la question a clairement déclaré qu'il utilisait Win32OpenSSL. D'où viennent les trucs Apache? En quoi est-ce pertinent par rapport à la question?
jww
3
Bien sûr, l'installation d'OpenSSL qui vient séparément ou avec Apache est la même chose. J'ai ajouté Apache bit parce que dans 95% des cas, la raison de l'installation d'OpenSSL sur Windows est qu'il va être utilisé avec Apache.
Artur Kędzior
Ceci est utile car XAMPP inclut OpenSSL dans le dossier Apache.
Jimmy Adaro
Travailler comme un charme!
Divyesh Prajapati
12

Essayez simplement d'exécuter openssl.exe en tant qu'administrateur.

Serghei Grajdean
la source
2
Vous ne devriez pas avoir à exécuter ces commandes en tant qu'administrateur pour les faire fonctionner. Il est préférable de résoudre le problème sous-jacent.
jww
S'il est installé dans le répertoire des fichiers du programme sur le lecteur système, l'exécution de la commande avec des droits élevés est nécessaire, sinon vous ne disposez pas des autorisations d'écriture.
CodeManX
1
Cela a fonctionné pour moi. Je ne sais pas pourquoi il essayait d'accéder C:\Program Files\Common Files\SSL/openssl.cnf, puis lors de l'exécution en tant qu'administrateur, il s'en fichait soudainement, il ne pouvait pas le trouver (et n'a pas créé le fichier non plus) mais cela a fonctionné pour moi donc je m'en fiche Soit.
Simon_Weaver
7

Je viens d'avoir une erreur similaire en utilisant le openssl.exe du dossier Apache pour Windows bin. J'avais l'indicateur -config spécifié par avait une faute de frappe dans le chemin du fichier openssl.cnf. Je pense que tu trouveras ça

openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

devrait être

openssl req -config "C:\OpenSSL\bin\openssl.cnf" -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem

Remarque: la configuration devrait probablement être cnf .

Nic Cottrell
la source
4

Si l'installation d'OpenSL a réussi, recherchez «OPENSSL» dans le lecteur c pour localiser le fichier de configuration et définir le chemin.

set OPENSSL_CONF=<location where cnf is available>/openssl.cnf

Cela a fonctionné pour moi.

hermes101
la source
3

Cette solution de contournement nous a tellement aidés dans mon travail (support technique), nous avons créé un simple fichier de commandes que nous pouvions exécuter de n'importe où (nous n'avions pas les autorisations pour l'installer). Cette solution de contournement définira la variable, puis exécutera OpenSSL pour vous. Il ouvre également le dossier bin pour vous (car c'est là que tous les fichiers que vous créez ou modifiez seront enregistrés). En outre, ce n'est que pour Windows.

Comment configurer:

  1. Téléchargez les binaires OpenSSL ici . (Notez que cela est confirmé pour fonctionner avec la version 0.9.8h.)
  2. Copiez ce code dans un fichier nommé StartOpenSSL.bat. Enregistrez-le dans un emplacement de votre choix. Il peut être exécuté de n'importe où.

    @echo off
    title OpenSSL
    
    cd\openssl\bin
    
    if exist "C:\openssl\share\openssl.cnf" (
    
    set OPENSSL_CONF=c:/openssl/share/openssl.cnf
    start explorer.exe c:\openssl\bin
    
    echo Welcome to OpenSSL
    
    openssl
    
    ) else (
    
    echo Error: openssl.cnf was not found
    echo File openssl.cnf needs to be present in c:\openssl\share
    pause
    
    )
    
    exit
    
  3. Une fois que vous avez téléchargé les binaires OpenSSL, extrayez-les sur votre lecteur C dans un dossier intitulé OpenSSL. (Le chemin doit être C: \ OpenSSL). Ne déplacez aucun des contenus des dossiers, extrayez-les simplement dans le dossier.
  4. Vous êtes prêt à utiliser OpenSSL. C'est une excellente solution de contournement pour les utilisateurs Windows qui n'ont pas les privilèges pour l'installer car il ne nécessite aucune autorisation. Exécutez simplement le fichier bat de plus tôt en double-cliquant dessus.
Rex Linder
la source
2

Le problème ici est qu'il N'EST PAS un fichier openssl.cnf fourni avec le truc GnuWin32 openssl. Vous devez le créer. Vous pouvez découvrir COMMENT créer un fichier openssl.cnf en allant ici:

http://www.flatmtn.com/article/setting-ssl-certificates-apache

Où tout vous explique comment le faire.

REMARQUE: La commande openssl donnée avec la barre oblique inverse à la fin est pour UNIX. Pour Windows: 1) Supprimez la barre oblique inverse et 2) Déplacez la deuxième ligne vers le haut pour qu'elle se trouve à la fin de la première ligne. (Vous obtenez donc une seule commande.)

AUSSI: Il est TRÈS important de lire les commentaires. Vous voudrez peut-être apporter des modifications en fonction de celles-ci.

Mark Manning
la source
2

J'ai eu le même problème sous Windows. Il a été résolu en définissant la variable d'environnement comme suit:

Nom de la variable: OPENSSL_CONF Valeur de la variable: C: (OpenSSl Directory) \ bin \ openssl.cnf

Braullio Soares
la source
1

Si vous voyez une erreur du type

erreur sur la ligne -1 c: apacheconfopenssl.cnf

essayez de passer de la barre oblique inverse à la barre oblique avant dans -config.

Jauyzed
la source
1

https://github.com/xgqfrms-gildata/App001/issues/3

  1. d'abord, assurez-vous que vous avez un openssl.cnffichier dans le bon chemin;
  2. si vous ne le trouvez pas, téléchargez-en un et copiez-le dans votre chemin de configuration.
$ echo %OPENSSL_CONF%

$ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf
xgqfrms
la source
OpenSSL & node.js
xgqfrms
impossible de trouver C: \ OpenSSL \
Snehal Dwivedi le
@SnehalDwivedi veuillez suivre les étapes que j'ai décrites.
xgqfrms
0

Exécutez la commande en tant qu'administrateur et copiez le fichier de configuration à un endroit où vous avez les droits de lecture et spécifiez le chemin avec le paramètre -config.

Dexion
la source
0

Je sais que c'est vieux - mais je pensais que d'autres qui se produisent à ce sujet (et utilisent Visual Studio) pourraient en bénéficier. J'ai lu ceci sur un autre article que je n'arrive pas à trouver.

Ouvrez votre configuration dans notepad ++ et assurez-vous que son codage est UTF-8 (c'est-à-dire pas UTF-8-BOM *).

Cela m'aurait épargné beaucoup de recherches / essais et erreurs ...

Jimnkey
la source
0

Je sais que cette question est ancienne mais voici comment je l'ai résolue.

J'ai copié le openssl.cnffichier du binrépertoire vers le répertoire parent qui est à la C:/Openssl/openssl.cnfplace C:/Openssl/bin/openssl.cnfet a bien fonctionné.

ahmed nader
la source