まずはWin32 OpenSSLをゲット
Shining Light Productionsで「Win32 OpenSSL v1.0.1g Light」と「Visual C++ 2008 Redistributables」をダウンロード。
ここでOSが64Bit版だからといって、Win64版をダウンロードすると後でハマリますので、必ずWin32版の方をダウンロードしてください。
(2014/5/11時点では、Win64版はエラーが出て、rand.datの時点で0バイトのファイルしかできない)
(今後もっと新しいバージョンのものが出ると思いますので、もっと新しいのがあれば必ずそれを利用するようにしてください。)
Win32 Open SSLのインストール
先にVisual C++ 2008 Redistributables(vcredist_x86.exe)をインストールしておく。(2014/6/24追記:英語版で!)
その後、Win32 OpenSSL v1.0.1g Light(Win32OpenSSL_Light-1_0_1g.exe)をインストール。
回避できる人教えてください。(;´Д`)
友人の金子徹哉氏から「英語版のVisual C++ 2008 Redistributablesならエラーでないよ」との報告がありました。
さすがシステム屋。
なるほど。(;´Д`)
なんとなくこっちを選択
よく分からなかったけども、ここはなんとなく「The OpenSSL binaries (/bin) directory」を選択してみました。
このあと寄付しろって画面になるので「Finish」をクリックし、開いたブラウザにてPayPalで寄付する、もしくはそっと閉じる。
(注:画像はWin64版です。すみません。直すのが面倒でした。)
Windowsの設定
コントロールパネル→システム→システムの詳細設定→システム環境変数→Pathに
;c:\OpenSSL-Win64\bin
を追加。
「システム環境変数」の下の「新規」をクリック。
変数名を「OPENSSL_CONF」
変数値を「C:\OpenSSL-Win32\bin」
に設定してOKをクリック。
Windows再起動。
SSLの秘密鍵、証明書作成
Windowsのコマンドプロンプトで
cd C:\OpenSSL-Win64\bin
次に
openssl md5 * > rand.dat
で疑似乱数生成。(エラーは出るがファイルはC:\OpenSSL-Win64\binにできている)
openssl genrsa –rand rand.dat –des3 2048 > key.pem
で秘密鍵ファイル生成。(パスフレーズは適当に決めてください。)
openssl req –new –key key.pem > server.csr
でCSR作成。
CountryNameだけJPって書いたけど、あとは面倒なので全部エンターキーで流してしまいました…。(;´Д`)
openssl x509 –req –signkey key.pem < server.csr > crt.pem
で証明書完成。(エラーは出るがファイルはC:\OpenSSL-Win64\binにできている)
key.pemとserver.crtをapp.jsのあるフォルダにコピーして終了。
rand.datは削除しておいてください。
node.js側の設定
app.jsでは、
var https = require('https');
var options= {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('crt.pem'),
passphrase: 'さっき決めたパスフレーズ'
};
https.createServer(options, app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
とまぁこんな感じにしておくと大丈夫です。
ブラウザでアクセス
これでnode.jsを動かしておいて、ブラウザでアクセスすると、
こんな感じの表示が出ますが、「このまま続行」をクリック。
これで以後httpsで通信できるようになります。
オレオレ証明書なんで仕方ない
なお、URLの表示されているところが
って表示になっていますが、オレオレ証明書なんで仕方ありません。(´・ω・`)
今日はこんなところ。
これでかなり時間とられちゃいました。orz