OpenSSLおよびopenssl.confファイルの読み取りエラー


119

Windows XP 32ビットを実行しています

次のURLからOpenSSLをダウンロードしてインストールしました。 http://www.slproweb.com/products/Win32OpenSSL.html

次のコマンドを使用して自己署名証明書を作成しようとしました

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

それからそれは次のエラーを出し始めました

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

次に、いつかグーグルした後、上記のコマンドを

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

しかし、今私はコマンドプロンプトで次のエラーを受け取ります

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:そのようなファイルはありません:。\ crypto \ conf \ conf_def.c:197:

助けてください。前もって感謝します。


3
正確なファイル名を確認してください:openssl.conf ---> openssl.cnf
マーク

2
Windowsのファイル拡張子は.cfgになりました。また、(コマンドラインまたは環境変数OPENSSL_CONFで)指定したファイルパスが引用符で囲まれていないことを確認してください。
tatx

ファイル拡張子(.cnf / .cfg)は、OpenSSLのインストールに使用されたものによって異なるようです。WampServer v3.2.2のインストールでは、構成ファイル名はopenssl.cnfでした。また、Shining Path Productionsのバイナリを使用して、Window10 64ビットインストールを行いました。そのインストールのファイル名はopenssl.cfgでした。OpenSSL構成ファイルの拡張子名のこの違いは、コンパイルに依存しているようです。OpenSSL v1.1.1gで認識される拡張名はまだテストしていません。
Bill Vallance

回答:


140

Windowsでは、環境プロパティを設定することもできますOPENSSL_CONF。たとえば、コマンドラインから次のように入力できます。

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

検証するには、次のように入力します。

echo %OPENSSL_CONF%

これをコンピューターの環境変数の一部として設定して、すべてのユーザーとサービスがデフォルトで使用できるようにすることもできます。たとえば、Windows NTの環境変数およびWindows XPの環境変数の管理方法を参照してください。

これで、config locationパラメーターを渡さなくてもopensslコマンドを実行できます。


9
ありがとう、私のために働いた!(OPENSSL_CONF = c:\ openssl-win32 \ bin \ openssl.cfgを設定)
Valentin Heinitz 14

@jwwがこれを試しましたが、setが無効なコマンドであることがわかります。何か案は?
サラ

3
@Sarah- setはWindowsコマンドであり、から実行するためのものcmd.exeです。Windows以外のマシンでは機能しません。事のどちらか、パワーシェルでは動作しません。のようなものを使用します。setecho$X=1; Write-Output $X
jww 2017年

@jwwありがとうございます。私はWindowsマシンを使用していますが、cmds.exeではなくopenssl.exeでそのコマンドを使用していました。私はあなたのコメントを読んでcmd.exeに移動し、代わりにそこにsetコマンドを入力しました。それは正しく動作しましたが、openssl.exeで「wrong_path / ssl / openssl.cnfから構成情報をロードできません」と同じエラーが発生するので、opensslディレクトリにパラメーター-configを追加して、それは完璧に働きました。嬉しいです 助けてくれてありがとう:)
Sarah

回答としてマークする必要があります。率直にも不必要なはずです。このOpenSSL Windowsディストリビューションが、なぜデフォルトで単にPWDにならないのですか?
stonedauwg

40

コマンドラインにパラメーターを追加し、実際にインストールされているパスに-config c:\your_openssl_path\openssl.cfg変更your_openssl_pathします。


すばらしい、このブログ投稿ajden.towfeek.se/post/…をフォロー していて、-configを追加するとcygwinでも機能し$ openssl ca -in server.csr -config /etc/ssl/openssl.cnf ます。 openssl.org/docs/apps/openssl.html
barlop

@nneonneoはこれと上記の解決策を試しましたが、それは私にsetとconfigが無効なコマンドであることを教えてくれます。何か案は?
サラ

setはWindowsでのみ機能します。configは独立したコマンドではありません(OpenSSLコマンドラインに追加します)。
nneonneo 2017年

29

手順4で次のようにopenssl.cnfファイルを自分で作成するだけです。http://www.flatmtn.com/article/setting-openssl-create-certificates

リンクが機能しなくなった後の編集 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
URLが見つかりません
Greg Domjan、2018年

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

正しい拡張子に注意してください(cnsではなくopenssl.cfg)。

ここからOpenSSLをインストールしました:http : //slproweb.com/products/Win32OpenSSL.html


インストールリンクが役に立った、私はどこか他の場所から0.9.8をダウンロードしましたが、動作しませんでした。ありがとうございました。
EpicPandaForce 2014年

14

OpenSSLでApacheをインストールしている場合は、binディレクトリに移動します。私の場合、D:\ apache \ binです。

* これらのコマンドは、opensslのスタンドアロンインストールがある場合にも機能します。

次のコマンドを実行します。

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

* これにより、開発目的で使用できる自己署名証明書が作成されます

ここでも、Apacheがhttpd.confにインストールされている場合は、以下を貼り付けます。

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

質問をする仲間は、Win32OpenSSLを使用していたことを明確に述べました。Apacheはどこから来たのですか?質問とどのように関連していますか?
jww 2014

3
もちろん、個別に付属するOpenSSLをインストールすることも、Apacheとともにインストールすることも同じです。WindowsにOpenSSLをインストールする理由の95%がApacheで使用されるためであるので、私はApacheビットを追加しました。
ArturKędzior2014

XAMPPにはApacheフォルダー内にOpenSSLが含まれているため、これは便利です。
ジミーアダロ2017

魅力のように働いています!
Divyesh Prajapati

12

管理者としてopenssl.exeを実行してみてください。


2
これらのコマンドを機能させるために、管理者としてこれらのコマンドを実行する必要はありません。根本的な問題を修正することをお勧めします。
jww 2014

システムドライブのプログラムファイルディレクトリにインストールされている場合は、昇格された権限でコマンドを実行する必要があります。それ以外の場合は、書き込み権限がありません。
CodeManX 2014年

1
これでうまくいきました。なぜアクセスしようとしていたのかわからずC:\Program Files\Common Files\SSL/openssl.cnf、管理者として実行しているときに突然、ファイルが見つからない(ファイルも作成されない)とは気になりませんでしたが、これは私にとってはうまくいったので気にしませんどちらか。
Simon_Weaver 2017年

7

Apache for Windows binフォルダーのopenssl.exeを使用して同様のエラーが発生しました。openssl.cnfファイルのパスにタイプミスがあったので、-configフラグを指定しました。あなたはそれを見つけると思います

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

する必要があります

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

注:confはおそらくcnfでなければなりません。


4

opensslのインストールが成功した場合は、Cドライブで「OPENSSL」を検索して構成ファイルを見つけ、パスを設定します。

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

それは私のために働いた。


3

この回避策は、私の仕事(テクニカルサポート)に非常に役立ちました。どこからでも実行できる単純なバッチファイルを作成しました(インストールする権限がありませんでした)。この回避策は変数を設定し、OpenSSLを実行します。また、binフォルダーが開きます(ここに、作成または変更したファイルが保存されます)。また、これはWindows専用です。

セットアップ方法:

  1. こちらからOpenSSLバイナリをダウンロードしてください。(これはバージョン0.9.8hで動作することが確認されていることに注意してください。)
  2. このコードをStartOpenSSL.batという名前のファイルにコピーします。これを任意の場所に保存します。どこからでも実行できます。

    @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. OpenSSLバイナリをダウンロードしたら、OpenSSLというタイトルのフォルダーのCドライブに解凍します。(パスはC:\ OpenSSLである必要があります)。フォルダーのコンテンツは移動せず、フォルダーに抽出してください。
  4. OpenSSLを使用する準備が整いました。これは、権限を必要としないため、インストールする権限を持っていないWindowsユーザーにとっては素晴らしい回避策です。ダブルクリックして、以前のbatファイルを実行するだけです。

2

ここでの問題は、GnuWin32のopensslで提供されるopenssl.cnfファイルがISNではないことです。作成する必要があります。openssl.cnfファイルを作成する方法は、次の場所で確認できます。

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

どのようにそれを行うかについてあなたのためにそれをすべてレイアウトします。

注意:末尾にバックスラッシュが付いたopensslコマンドはUNIX用です。Windowsの場合:1)バックスラッシュを削除し、2)2行目を上に移動して、1行目の最後に移動します。(つまり、コマンドは1つだけです。)

また、コメントを読むことは非常に重要です。それらに基づいて行うとよい変更がいくつかあります。


2

Windowsでも同じ問題が発生しました。次のように環境変数を設定することで解決しました。

変数名:OPENSSL_CONF変数値:C:(OpenSSl Directory)\ bin \ openssl.cnf


1

次のようなエラーが表示された場合

行-1のエラーc:apacheconfopenssl.cnf

-configでバックスラッシュからフロントスラッシュに変更してみてください。


1

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

  1. まず、openssl.cnf正しいパスにファイルがあることを確認してください。
  2. 見つからない場合は、ダウンロードして設定パスにコピーしてください。
$ echo %OPENSSL_CONF%

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

OpenSSLとnode.js
xgqfrms

C:\ OpenSSL \が見つかりませんでした
Snehal Dwivedi

@SnehalDwivediは、私が説明した手順に従ってください。
xgqfrms

0

管理者としてコマンドを実行し、読み取り権限のある場所に構成ファイルをコピーし、-configパラメーターでパスを指定します。


0

私はこれが古いことを知っています-しかし、これで発生する(そしてVisual Studioを使用する)他の人が恩恵を受けるかもしれないと考えました。私は見つけられないように思える別の投稿でこれを読みました。

設定をnotepad ++で開き、エンコーディングがUTF-8(UTF-8-BOM *ではない)であることを確認します。

これは私に多くの検索/試行錯誤を救わせるでしょう...


0

私はこの質問が古いことを知っていますが、ここに私がそれを解決した方法があります。

ディレクトリから親ディレクトリにopenssl.cnfファイルをコピーしましたbinが、C:/Openssl/openssl.cnf代わりにC:/Openssl/bin/openssl.cnf正常に機能しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.