[解決済み] nodejs - 証明書チェーンで自己署名証明書をエラーにする
2022-03-05 04:07:35
質問
クライアントサイドの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);
}
Error: Self signed certificate in certificate chain.
Postmanを使用する場合は、クライアント証明書と鍵をインポートして問題なく使用することができます。何か解決策はないでしょうか?また、postmanがどのように証明書を処理し、動作するのか、教えていただきたいです。
解決方法を教えてください。
オプション1: 警告を表示しない(開発者に有効)
質問内容から推測すると、SSL通信に自己署名証明書を使用しているため、開発で行っているのではないかと思われます。
その場合は、nodeを実行している場所で、環境変数として追加してください。
export NODE_TLS_REJECT_UNAUTHORIZED='0'
node app.js
で直接ノードを実行するか
NODE_TLS_REJECT_UNAUTHORIZED='0' node app.js
これはNodeに信頼されていない証明書(信頼されていない=認証局で検証されていない)を許可するように指示します。
環境変数を設定したくない場合や、複数のアプリケーションでこの処理を行う必要がある場合は、npmが提供する
strict-ssl
に設定することで
false
npm config set strict-ssl=false
オプション2:postmanのようにCA証明書を読み込む(TLSでのテストに便利です)
投稿者 @kDoyle さんのように、すでにCA証明書を持っている場合は、各リクエストで設定できます (@nic ferrier さんありがとうございます)。
let opts = {
method: 'GET',
hostname: "localhost",
port: listener.address().port,
path: '/',
ca: fs.readFileSync("cacert.pem")
};
https.request(opts, (response) => { }).end();
オプション3:信頼できるソースからの適切なSSL証明書を使用する(本番に有効)
letsencrypt.orgは無料で、簡単に設定でき、鍵の自動ローテーションが可能です。 https://letsencrypt.org/docs/
関連
-
[解決済み】JavaScriptのgetElementByNameが機能しない
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない
-
[解決済み] OpenSSLを使用して自己署名入りSSL証明書を生成する方法を教えてください。
-
[解決済み] 自己署名入りの証明書をgitに受け入れさせるにはどうしたらいいですか?
-
[解決済み] node.jsのhttps.requestで無効な自己署名入りssl証明書を無視する?
-
[解決済み】自己署名付きlocalhost証明書をChromeが受け入れるようにする方法
-
[解決済み] [Solved] javax.net.ssl.SSLHandshakeException の解決: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました エラー?
-
[解決済み] ローカルホスト用の信頼できる自己署名入りSSL証明書を作成する(Express/Nodeで使用するため)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: $(...).DataTable は関数ではありません。
-
[解決済み】Uncaught ReferenceError: angular is not defined - AngularJSが動作しない。
-
[解決済み] Uncaught TypeError: 未定義のプロパティ 'top' を読み込めない
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】「Uncaught TypeError: Chromeで "Illegal invocation "が発生する。
-
[解決済み】JavaScript ランタイムエラー:'$'が未定義です。
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント