saitetu diary

ロボット,IoT,アプリ開発などの備忘録的なブログです。機械加工,電子工作とかも。。

Unity,Blender,C#,Javaなどの備忘録的なブログです。電子工作やArduinoなんかも。

Node.jsでhttpsをGETした際にError: unable to verify the first certificate at TLSSocket.onConnectSecureと怒られたときの対処法

事象

タイトルの通り,Node.jsのhttpsモジュールでGETしにいくと,Errorが発生しました. 後で気づいたのですが,wgetcurlでも

ERROR: cannot verify certificate, issued by ‘CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US’:

みたいなエラーが出ていました.

(ブラウザでは何も問題が無かったので今まで全く気づきませんでした.)

原因

どうやら,中間ルートCA証明書が切れていることが原因らしい ←つまりサーバ側に問題あり

解決方法

サーバの証明書はLet's Encryptを使用していて,Nginxでホスティングしていましたが,どうやらそこでの設定に問題があったようです.

nginxの/etc/nginx/conf.d/ssl.conf等をこんな感じにすれば解決します.

server {
        listen  443 ssl;
        server_name example.com;
#      ssl_certificate /etc/letsencrypt/live/example.com/cert.pem; を下に変更
        ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem
}

まあ,つまりはcertの指定が,中間CA証明書を連結しているfullchain.pemの方にしなければいけないというだけのことでした..

参考

qiita.com