Windowsで/usr/local/ssl/openssl.cnfから構成情報をロードできません


184

WindowsでOpenSSLを使用している場合:

openssl genrsa -out privatekey.pem 1024 -->

正常に作成されました

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

エラーメッセージを

/usr/local/ssl/openssl.cnfから構成情報をロードできません


4
すべての回答は、なんとかして設定ファイルopenssl.cnfを参照する必要があることを示しています。しかし、誰もどの設定ファイルについて言及していませんか?誰がそれを作成したのですか?その内容は何ですか?
joedotnot

回答:


170

OpenSSLをインストールした後、新しい環境変数を作成する必要がありました。

  • 名前: OPENSSL_CONF
  • 値: C:\Program Files\OpenSSL\openssl.cnf

PowerShellで:

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

この値は、以前のインストールバージョンとは異なります(この投稿の以前の編集で確認できます)。また、opensslバイナリフォルダー${env:ProgramFiles}\OpenSSLをパスに追加することを忘れないでください。


16
バージョン1.0.1j C:\OpenSSL-Win32\bin\openssl.cfgでは代わりに使用する必要がありました。
Kevin Panko 2014年

7
または64ビットシステムのC:\ OpenSSL-Win64 \ bin \ openssl.cfg
borjab '13年

13
またはC:\Program Files (x86)\Git\ssl\openssl.cfg、すでにgitを使用している人のために。
kspearrin

どこで/どのようにこの値を設定していますか?
matthew_360

これは、ユーザーのスタートアップ環境でそれを置く:SETX OPENSSL_CONF c:/libs/openssl-0.9.8k/openssl.cnf
ロス押え

78

次のような構成への絶対パスを指定する必要があります。

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

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

4
バージョン1.0.1eでからダウンロードslproweb.com/products/Win32OpenSSL.htmlのみのファイルがあるopenssl.cfgbinディレクトリに存在するが、インストール後に。しかし、このファイルを使用すると、とにかく動作するようです。
vanje 2013

9
Gitで提供されるOpenSSLを使用している場合は、次の方法を試してみてください-config "C:\Program Files (x86)\Git\ssl\openssl.cnf"
Joel B

2
openssl:Error: '-config'は無効なコマンドです。どうやって設定するの?
benez

1
@kewlbfy -configフラグを使用する場所については、以下の@Kosarの回答を参照してください。これは私にとっては
うまくいきました-danjah

36

Windows 10では、管理者モードで再起動したり実行したりする必要はありませんが、代わりにopenssl configを次のように設定します。

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

もちろん、使用している場合 GnuWin32


20

Windowsでは、[ 同様のシナリオ ]

私も同じ問題に直面していましたが、証明書署名リクエストのリクエスト中に発生しました。

私は以下を行いました、それは私のために働きました。

OpenSSLをインストールしたら、システムの再起動後にコマンドプロンプトを管理者として実行しました。[最善の方法は両方を実行したことです。管理者として実行し、システムを再起動してください]

した、1。[エラーケース]

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

警告:構成ファイルを開けません:C:\ OpenSSL-Win64 \ bin \ openssl.cnfおよびC:\ OpenSSL-Win64 \ bin \ openssl.cnfから構成情報を読み込めません

2. [警告あり]

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

[警告メッセージ]:警告:設定ファイルを開けません:C:\ OpenSSL-Win64 \ bin \ openssl.cnf

しかし、server.key Itのパスフレーズの入力を求められました働いていた私のために。

私は、これを参照しました リンク

ありがとうございました。


ありがとう、あなたが提供したリンクは私を大いに助けてくれました:akadia.com/services/ssh_test_certificate.html
leole

15

唯一のこの状況で私のために働いていたものでした自己作成 のopenssl.cnf ファイル

この演習に必要な基本事項を以下に示します(必要に応じて編集してください)。

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

お役に立てば幸いです。


1
ここにリストされている他のすべての解決策を試したので、これは私にとってはうまくいきました。構成が(openssl.exeディレクトリに)作成されると、実行できますopenssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365 -config openssl.cnf
Jimbo

12

OpenSSLをインストールしたら、コンピュータを再起動してを使用する必要がありますRun As Administrator。その後、その作品。


11

GnuWin32ツールを使用して、openssl.cnfをC:\ gnuwin32 \ shareの下に見つけました

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

9

Windows 8では、openssl.cnfファイルを見つけてCドライブにコピーしました。次に:

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

完璧に働きました。



4

私の場合、オプションを使用してコマンドでopenssl.cnfファイルのパスを手動で設定する必要がありconfigます。したがって、コマンド

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

Win32 OpenSSL v1.1.0gを使用している場合は、次の環境変数を設定します。

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

このコマンドを「server.key」で実行する前に、「server.csr」を正常に作成します

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

1

opensslが見つからない理由に関する基本的な質問:短い回答:opensslの一部のインストールパッケージには、デフォルトのopenssl.cnfがあらかじめ含まれています。他のパッケージにはありません。後者の場合は、以下に示すリンクから1つを含めます。必要に応じて、ユーザー固有の追加情報(DN名など)を入力できます。

https://www.openssl.org/docs/manmaster/man5/config.htmlから、直接引用します:

「OPENSSLライブラリ構成

アプリケーションは、マスターOpenSSL構成ファイル、またはオプションで代替構成ファイルを使用して、OpenSSLの特定の側面を自動的に構成できます。opensslユーティリティーにはこの機能が含まれています。サブコマンドで代替構成ファイルを使用するオプションが使用されていない限り、すべてのサブコマンドはマスターOpenSSL構成ファイルを使用します。

ライブラリ構成を有効にするには、デフォルトセクションに、メイン構成セクションを指す適切な行を含める必要があります。デフォルトの名前はopenssl_confで、opensslユーティリティで使用されます。他のアプリケーションは、myapplication_confなどの代替名を使用する場合があります。すべてのライブラリ構成行は、構成ファイルの最初のデフォルトセクションに表示されます。

構成セクションは、特定のモジュール構成情報を含む名前と値のペアのセットで構成される必要があります。名前は、構成モジュールの名前を表します。値の意味はモジュール固有です。たとえば、構成モジュール固有の情報を含む追加の構成セクションを表す場合があります。例えば:"

そのため、使用に固有の他のエントリとともに、識別名(DN)に従ってopenssl.cnfを自己構成する必要があるようです。

以下は、特定のエントリを含むopenssl.cnfを生成できるテンプレートファイルです。

1つのアプリケーションには、デモ.cnfファイルを含むデモインストールが実際にあります。

さらに、プログラムで.cnfファイルにアクセスする必要がある場合は、適切なヘッダー--openssl / conf.h--を含め、.cnfファイルを使用して解析できます。

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

ここで「CONF_modules_load_file」のためのドキュメントがあります。


0

私が呼び出す前に変数を入れてトリックをしました:

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

0

Windows Powershellの場合:

$env:OPENSSL_CONF = "${env:ProgramFiles}\OpenSSL-Win64\bin\openssl.cfg"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.