Windows PCのNetBeansでHTTPSのテストをする。
1.Win32 opensslのインストール
Win32OpenSSL_Light-1_0_2o.exeをダウンロードしてインストールする。
Select Additional TaskのダイアログでDLLファイルの保存場所を
The OpenSSL binaries(/bin) directoryを選択する。(DLLを他の場所にばらまかないため)
其の他はデホルトでインストール。
最後に寄付のチェックを外してFinishで修了。
2.パスを通す。
ネットの情報ではたいていの場合インストール後パスを通すとあるが
臨時でテスト用に使うだけなので、ディレクトリ移動でいこうと思ったが
関連ファイルを見ている部分でエラーになるので、openssl.exeにパスお通す。
C:\Users>openssl version
OpenSSL 1.0.2o 27 Mar 2018
で確認完了
3.keyの作製
作業用のディレクトリを作成してコマンドプロンプトでディレクトリに移動
key作製の為の疑似乱数を生成
openssl md5 * > rand.dat
rand.datを使用してkeyを作製
openssl genrsa -rand rand.dat -des3 -out test.key 2048
パスフレーズを2回入力(abcd)して「Enter」してkeyの作製
4.csrの作製
openssl req -new -key test.key -out test.csr
パスフレーズを要求されるので、3で使用した(abcd)を入力
csrに指定する情報が要求されるので適当に入力
使用するサーバー名にlocalhostを設定する必要あり。
Common Name (eg,YOUR name) []:localchost[enter]
5.crtの作製
csrにkeyを使用してcrtを作製
openssl x509 -req -days 3650 -sha1 -in test.csr -signkey test.key -out test.crt
パスフレーズを要求されるので入力
6.keyからパスフレーズを削除
openssl rsa -in test.key -out test.key
パスフレーズを要求されるので、入力
7.node.jsでhttpsのテスト
test.crtとtest.keyをnode.jsの作業ディレクトリにコピーしてhttps用に作製した
httpstest.jsを実行
cfenvが無いと怒られたのでcfenvをインストール
npm install cfenv
これでhttpsが実行される。ブラウザでオレオレ証明なので、保護されていませんと
出るが、一応実行可能になる。
8.証明書の設定
node.crtをクリックして表示される証明書ダイアログで証明書のインストールを
実行する。
ブラウザで証明書を有効にする。
IEではこれで保護されていませんの表示が消えたが、Chromeは設定方法が間違って
いるのか保護が有効にならない。
調べたらChromeではsubjectAltNameが設定されていないと受け付けない模様、
単なるテストだけなので今回はパスする。
9.其の他
途中でネットから拾った情報で
set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg
としたが必要だったかどうか不明
(その後の操作では、無しでOKなので、この設定は不要)
10.パールのインストール
ネットの情報でCA.plを使う例があったため、パールもインストールした。
ダウンロードしたActivePerl-5.22.4.2205-MSWin32-x86-64int-403863.exeを
インストールする。
すべてデホルトでインストール。コマンドプロンプトを立上げ直して
perl -vでバージョンが確認できればインストール完了。
11.その後openssl.cnfは編集せずにSAN対応の証明書を作成する例があったので
実施。(portaltan.hatenablog.com/entry/2017/10/16/174619)
作業用のディレクトリを作製しコマンドプロンプトで作業用ディレクトリに移動、
前と同じ手順で全て作製。
echo subjectAltName=DNS:localhost > san.ext
としてsan.extファイルを作成
openssl x509 -days 3650 -req -signkey test.key < test.csr > test.crt -extfile san.ext
で作製したtest.crtをクリックして証明書ダイアログで
「信頼されたルート証明機関」に証明書をインストール。
Google-Chromeで認証が通るようになった。