2016年9月24日土曜日

Windowsでopensslを使う

Windowsでopensslコマンドを使った時に嵌ったので、今後のためにメモ。

本家のOpenSSLではソースコードのみを配布しているためちょっと使おうと思ったときには敷居が高い。 バイナリ版はいくつかあるようだが Win32 OpenSSLがx64版もありよさそうな感じである。 ここから "Win64 OpenSSL v1.1.0a" を落としてきてインストール。コマンドラインから実行すると以下のエラーが出た。

C:\> c:\OpenSSL-Win64\bin\openssl.exe req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out server.crt -keyout server.pem
Can't open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory
756:error:02001003:system library:fopen:No such process:crypto\bio\bss_file.c:74:fopen('C:\Program Files\Common Files\SSL/openssl.cnf','r')
756:error:2006D080:BIO routines:BIO_new_file:no such file:crypto\bio\bss_file.c:81:
Generating a 2048 bit RSA private key
..................+++
..........................................................+++
writing new private key to 'server.pem'
-----
unable to find 'distinguished_name' in config
problems making Certificate Request
756:error:0E06D06A:configuration file routines:NCONF_get_string:no conf or environment variable:crypto\conf\conf_lib.c:272:

openssl.cnf というファイルが見つからないというエラーが出ている。 しかも、インストール先とは全く関係ない C:\Program Files\Common Files\SSL というフォルダを探しに行っている。

調査したところOPENSSL_CONFという環境変数にopenssl.cnfファイルの場所を指定すればよいらしいとのこと。 このファイルはOpenSSLインストール先のbin\snfフォルダにある、試しに以下のように設定して実行してみた。

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

C:\> c:\OpenSSL-Win64\bin\openssl.exe req -newkey rsa:2048 -new -x509 -days 3652 -nodes -out server.crt -keyout server.pem

---
Generating a 2048 bit RSA private key
..........................................................+++
..........................................................+++
writing new private key to 'server.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Setagaya-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company K.K.
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:www.my-company.com
Email Address []:
---

うまくいったようだ、

1 件のコメント:

  1. Windows 10でopensslコマンドがエラーになり困っていましたが、
    こちらの記事のおかげで解決することができました。
    ありがとうございます。

    返信削除