1. ホーム
  2. node.js

[解決済み] node.jsのhttps.requestで無効な自己署名入りssl証明書を無視する?

2022-03-14 16:20:13

質問

私はローカルの無線ルータ(Linksys)にログインする小さなアプリに取り組んでいますが、ルータの自己署名付きssl証明書に関する問題に遭遇しています。

wget 192.168.1.1 を実行したところ。

ERROR: cannot verify 192.168.1.1's certificate, issued by `/C=US/ST=California/L=Irvine/O=Cisco-Linksys, LLC/OU=Division/CN=Linksys/[email protected]':
Self-signed certificate encountered.
ERROR: certificate common name `Linksys' doesn't match requested host name `192.168.1.1'.
To connect to 192.168.1.1 insecurely, use `--no-check-certificate'.

nodeでは、捕捉されるエラーは。

{ [Error: socket hang up] code: 'ECONNRESET' }

現在の私のサンプルコードは

var req = https.request({ 
    host: '192.168.1.1', 
    port: 443,
    path: '/',
    method: 'GET'

}, function(res){

    var body = [];
    res.on('data', function(data){
        body.push(data);
    });

    res.on('end', function(){
        console.log( body.join('') );
    });

});
req.end();

req.on('error', function(err){
    console.log(err);
});

node.jsに"--no-check-certificate"と同等のことをさせるにはどうしたらいいでしょうか?

どのように解決するのですか?

安直で安全でない答え。

追加する

process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0;

を呼び出す前に、コード内で https.request()

より安全な方法(上記の解決策ではノードプロセス全体が安全でなくなる)は、次のように答えられる。 質問