クライアント側のhttpsリクエストで問題が発生しています。
スニペットは次のようになります。
var fs = require('fs');
var https = require('https');
var options = {
hostname: 'someHostName.com',
port: 443,
path: '/path',
method: 'GET',
key: fs.readFileSync('key.key'),
cert: fs.readFileSync('certificate.crt')
}
var requestGet = https.request(options, function(res){
console.log('resObj', res);
}
エラー:証明書チェーン内の自己署名証明書です。
Postmanを使用すると、クライアント証明書とキーをインポートして問題なく使用できます。利用可能なソリューションはありますか?また、郵便配達員がどのように証明書を処理し、機能するかについてのいくつかのライトを与えたいと思います。
あなたの質問から、SSL通信に自己署名証明書を使用しているため、開発中にこれを行っていると推測しています。
その場合は、NODE_TLS_REJECT_UNAUTHORIZED='0'
を環境変数としてノードを実行している場所に追加します。
これはNode信頼できない証明書を許可するように指示します(信頼できない=認証局によって検証されません)
本番環境でこの環境変数を設定することはお勧めしません。 letsencrypt.orgなどの信頼できるプロバイダーの無料のSSL証明書を使用します
コマンドを書くことができますnpm config set strict-ssl = false
検証をオフにするのは非常に危険です。証明書を検証する方がはるかに優れています。
次のように、オプションオブジェクトのca
キーを使用して、認証局の証明書を要求にプルできます。
let opts = {
method: 'GET',
hostname: "localhost",
port: listener.address().port,
path: '/',
ca: await fs.promises.readFile("cacert.pem")
};
https.request(opts, (response) => { }).end();
SSLテストの作成方法を確認できるように、このデモ全体を作成しました。
こちら です。