OpenSSL and error in reading openssl.conf file

WindowsConfigurationOpensslEnvironment Variables

Windows Problem Overview


I am running windows xp 32bit

I just downloaded Openssl from the following URL and installed it. http://www.slproweb.com/products/Win32OpenSSL.html

and then i tried to create a self signed certificate by using the following command

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

then it started giving the following error

> Unable to load config info from /usr/local/ssl/openssl.cnf

Then after googling sometime i changed the above command to

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

But now i get the following error in the command prompt

> error on line -1 of C:\OpenSSL\bin\openssl.conf
> 4220:error:02001002:system library:fopen:No such file or > directory:.\crypto\bio\bss_file.c:126:fopen('C:\OpenSSL\bin\openssl.conf','rb') > 4220:error:2006D080:BIO routines:BIO_new_file:no such > file:.\crypto\bio\bss_file.c:129:
> 4220:error:0E078072:configuration file routines:DEF_LOAD:no such > file:.\crypto\conf\conf_def.c:197:

Please help. Thanks in advance.

Windows Solutions


Solution 1 - Windows

On Windows you can also set the environment property OPENSSL_CONF. For example from the commandline you can type:

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

to validate it you can type:

echo %OPENSSL_CONF%

You can also set it as part of the computer's environmental variables so all users and services have it available by default. See, for example, Environment variables in Windows NT and How To Manage Environment Variables in Windows XP.

Now you can run openssl commands without having to pass the config location parameter.

Solution 2 - Windows

Just add to your command line the parameter -config c:\your_openssl_path\openssl.cfg, changing your_openssl_path to the real installed path.

Solution 3 - Windows

Just create an openssl.cnf file yourself like this in step 4: http://www.flatmtn.com/article/setting-openssl-create-certificates

Edit after link stopped working The content of the openssl.cnf file was the following:

#
# 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

Solution 4 - Windows

set OPENSSL_CONF=c:/{path to openSSL}/bin/openssl.cfg

take care of the right extension (openssl.cfg not cnf)!

I have installed OpenSSL from here: http://slproweb.com/products/Win32OpenSSL.html

Solution 5 - Windows

If you have installed Apache with OpenSSL navigate to bin directory. In my case D:\apache\bin.

*These commands also work if you have stand alone installation of openssl.

Run these commands:

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

*This will create self-signed certificate that you can use for development purposes

Again if you have Apache installed in the httpd.conf stick these:

  <IfModule ssl_module>
	SSLEngine on
	SSLCertificateFile "D:/apache/conf/server.crt"
	SSLCertificateKeyFile "D:/apache/conf/server.key"
  </IfModule>

Solution 6 - Windows

Just try to run openssl.exe as administrator.

Solution 7 - Windows

I just had a similar error using the openssl.exe from the Apache for windows bin folder. I had the -config flag specified by had a typo in the path of the openssl.cnf file. I think you'll find that

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

should be

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

Note: the conf should probably be cnf.

Solution 8 - Windows

If you installed OpenSSL on Windows together with Git, then add this to your command:

-config "C:\Program Files\Git\usr\ssl\openssl.cnf"

Solution 9 - Windows

I had the same issue on Windows. It was resolved by setting the environment variable as follow:

Variable name: OPENSSL_CONF Variable value: C:(OpenSSl Directory)\bin\openssl.cnf

Solution 10 - Windows

If openssl installation was successfull, search for "OPENSSL" in c drive to locate the config file and set the path.

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

It worked out for me.

Solution 11 - Windows

This workaround helped us so much at my job (Tech Support), we made a simple batch file we could run from anywhere (We didnt have the permissions to install it). This workaround will set the variable and then run OpenSSL for you. It also opens up the bin folder for you (cause this is where any files you create or modify will be saved). Also, this is only for Windows.

How to Set Up:

  1. Download the OpenSSL binaries [here][1]. (Note that this is confirmed to work with version 0.9.8h.)

  2. Copy this code to a file named StartOpenSSL.bat. Save this to a location of your choice. It can be run from anywhere.

     @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. Once you have downloaded the OpenSSL binaries, extract them to your C drive in a folder titled OpenSSL. (The path needs to be C:\OpenSSL). Do not move any of the folders contents around, just extract them to the folder.

  4. You are ready to use OpenSSL. This is a great workaround for Windows users who dont have the privileges to install it as it requires no permissions. Just run the bat file from earlier by double clicking it. [1]: http://gnuwin32.sourceforge.net/packages/openssl.htm

Solution 12 - Windows

The problem here is that there ISN'T an openssl.cnf file given with the GnuWin32 openssl stuff. You have to create it. You can find out HOW to create an openssl.cnf file by going here:

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

Where it lays it all out for you on how to do it.

PLEASE NOTE: The openssl command given with the backslash at the end is for UNIX. For Windows : 1)Remove the backslash, and 2)Move the second line up so it is at the end of the first line. (So you get just one command.)

ALSO: It is VERY important to read through the comments. There are some changes you might want to make based upon them.

Solution 13 - Windows

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

  1. first, make sure you have an openssl.cnf file in the right path;
  2. if you can't find it, just download one and copy it to your setting path.

$ echo %OPENSSL_CONF%

$ set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cnf

Solution 14 - Windows

If you are seeing an error something like

>error on line -1 c:apacheconfopenssl.cnf

try changing from back slash to front slash in the -config.

Solution 15 - Windows

Run the command as administrator and copy the config file to somewhere where you have read rights and specify the path with the -config parameter.

Solution 16 - Windows

I know this question is old but here is how I solved it.

I copied the openssl.cnf file from the bin directory to the parent directory which is C:/Openssl/openssl.cnf instead of C:/Openssl/bin/openssl.cnf and worked fine.

Solution 17 - Windows

I know this is old -- but thought others that happen on this (and use Visual Studio) might benefit. I read this on another post that I can't seem to find.

Open your config in notepad++ and make sure it's Encoding is UTF-8 (i.e., not UTF-8-BOM*).

This would have save me a lot of searching/trial'n'errors...

Solution 18 - Windows

I was also facing same issue. Below are the steps to resolve it.

  1. check your openssl version

> openssl version

  1. If your version is below

> OpenSSL 1.1.1h 22 Sep 2020

  1. go to below link and download latest full version of openssl. openssl windows installer
  2. After installation add openssl path at the top of 'PATH' variable in system path.
  3. confirm your version is latest by opening new command prompt and running command in step 1
  4. Now you're ready to run the command again and this time it will work.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSreeramView Question on Stackoverflow
Solution 1 - WindowsdvtoeverView Answer on Stackoverflow
Solution 2 - WindowsNiklView Answer on Stackoverflow
Solution 3 - WindowsSamView Answer on Stackoverflow
Solution 4 - Windowsuser669677View Answer on Stackoverflow
Solution 5 - WindowsArtur KędziorView Answer on Stackoverflow
Solution 6 - WindowsSerghei GrajdeanView Answer on Stackoverflow
Solution 7 - WindowsNic CottrellView Answer on Stackoverflow
Solution 8 - WindowsSherlockView Answer on Stackoverflow
Solution 9 - WindowsBraullio SoaresView Answer on Stackoverflow
Solution 10 - Windowshermes101View Answer on Stackoverflow
Solution 11 - WindowsRex LinderView Answer on Stackoverflow
Solution 12 - WindowsMark ManningView Answer on Stackoverflow
Solution 13 - WindowsxgqfrmsView Answer on Stackoverflow
Solution 14 - WindowsJauyzedView Answer on Stackoverflow
Solution 15 - WindowsDexionView Answer on Stackoverflow
Solution 16 - WindowsAhmed NaderView Answer on Stackoverflow
Solution 17 - WindowsjimnkeyView Answer on Stackoverflow
Solution 18 - WindowsKrisshView Answer on Stackoverflow