nodejsのsslまわりメモ

自鯖に設定したLets'e EncryptのSSL証明書の設定をミスっていて(おそらく中間証明書が設定できておらず)、だいぶ回り道をしたが、折角なのでメモを残しておく。

  • nodeが使うroot証明書はハードコードされてる。拡張方法が提供されるっぽいやりとりされていたが・・。
    • node_root_certs.hにいる
    • バージョンによって異なりそうだが、今回必要だったDST Root CA X3はv0.1.45時点で既に入ってそう
$ find . -name 'node_root_certs.h' |xargs grep  'DST Root CA X3'
./v0.10.45/node-v0.10.45/src/node_root_certs.h:/* DST Root CA X3 */
./v4.3.2/node-v4.3.2/src/node_root_certs.h:/* DST Root CA X3 */
./v7.8.0/node-v7.8.0/src/node_root_certs.h:/* DST Root CA X3 */

letsencrypt.org

この辺とか、各所で議論してるっぽい

github.com

  • root証明書がいない問題が発生したらこのあたりが使えそう、ただし初回リクエストでダウンロードが発生したので、lambdaとかの実行環境だとnodeが入れ替わったタイミングで困るのでちょっと扱いづらい Daplie / node-ssl-root-cas · GitLab

  • 先の中間証明書がない問題で検証に失敗していた場合も.addFileで中間証明書をリクエスト元でセットしてやると成功した(本来やることはないだろうけど・・)

とりあえずエラーメッセージはきちんと読もう。