非常に行うために誘惑することができるrejectUnauthorized: false
か、process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
それをしません!それはあなたを真ん中の攻撃の男にさらします。
他の答えは、問題が証明書が「中間CAによって署名されている」という事実にあるという点で正しいです。これには簡単な解決策があり、ssl-root-cas
追加のCAをノードに挿入したり、ノードに追加したりするサードパーティのライブラリを必要としません。
ノードのほとんどのhttpsクライアントは、解決するリクエストごとにCAを指定できるオプションをサポートしていますUNABLE_TO_VERIFY_LEAF_SIGNATURE
。以下は、ノードの組み込みhttps
モジュールを使用した簡単な例です。
import https from 'https';
const options = {
host: '<your host>',
defaultPort: 443,
path: '<your path>',
// assuming the bundle file is co-located with this file
ca: readFileSync(__dirname + '/<your bundle file>.ca-bundle'),
headers: {
'content-type': 'application/json',
}
};
https.get(options, res => {
// do whatever you need to do
})
ただし、ホスティングサーバーでssl設定を構成できる場合、最適なソリューションは、中間証明書をホスティングプロバイダーに追加することです。この方法では、サーバー自体に含まれているため、クライアントリクエスターはCAを指定する必要がありません。個人的にはnamecheap + herokuを使用しています。私にとっての秘訣は、で1つの.crtファイルを作成することでしたcat yourcertificate.crt bundle.ca-bundle > server.crt
。次に、このファイルを開き、最初の証明書の後に改行を追加しました。あなたはもっと読むことができます
https://www.namecheap.com/support/knowledgebase/article.aspx/10050/33/installing-an-ssl-certificate-on-heroku-ssl