次のコードを使用して、ローカルホストからheroku上の外部httpsRESTサービスに接続しようとしています。
request(
{
url: config.get('host') +req.originalUrl,
method: req.method,
}, function (error, response, body) {
})
コールバックで次のエラーが発生します。
ホスト名/ IPが証明書のaltnameと一致しません: "ホスト:localhost。は証明書のaltnameにありません:DNS:_。herokuapp.com、 DNS:herokuapp.com "
ホスト:ローカルホスト。 証明書の代替名に含まれていません:DNS:_。herokuapp.com、 DNS:herokuapp.com
ローカルにインストールされた同じサービスに接続すると、すべてが正しく機能するため、httpsに関連しているはずです。
何か助けはありますか?
リクエストの正確なURLは何ですかconfig.get('host') +req.originalUrl
?
私もこれを手に入れています。 自己署名証明書を使用していますが、ホスト名チェックを実行したくありません。 私は私の要求にこれを持っています
agentOptions: {
ca: fs.readFileSync('ca.cert.pem')
}
ignoreHostnameをどのように設定しますか?
requireUnauthorized変数をfalseに設定しようとしましたか?
`` `` `` request({
url:config.get( 'host')+ req.originalUrl、
メソッド:req.method、
requireUnauthorized:false
}、
関数(エラー、応答、本文){
})```
`` `` `` ``
rejectUnauthorized: false
がフロントページのドキュメントのどこかにあるといいですね。
rejectUnauthorized: false
すると、サーバー証明書を受け入れることができませんか? その場合、私はそれが有効な解決策であるとは考えていません。
証明書が信頼できるCA(私の場合は自分のCA)によって署名されていることを確認して、サーバーを確認したいと思います。 私はすべてを沈黙させてそれを不安定にしたくありません。
このようなものはひどいです
サーバー認定のCommonName
をクライアントのhostname
と一致させる必要があります。
サーバー認証のCommonNameをクライアントのホスト名と一致させる必要があります。
なぜそうなのですか? クライアントがサーバー証明書に存在する独自のホスト名を気にするのはなぜですか? これはサーバーの認証に関するものです。 ありがとう
参考までに、リクエストの転送中にこのエラーが発生しました。 request({host: 'something.com'... headers: req.headers...
を使用しました。最初は、ヘッダーにhost: 'localhost'
が原因であることに気づいていませんでした。 私はそれを交換しました、そして今それはOKを確認します。
私は同じ問題にぶつかっていると思います。 ノード6.10.3とリクエスト2.88を使用しているときに、次のエラーが発生します。
エラー:ホスト名/ IPが証明書の代替名と一致しません: "ホスト:https。は証明書の代替名にありません:
これをノードtls.jsコードまで追跡しました。 どういうわけか、「https」。 リクエストによってホスト名としてノードに渡されています。 requireUnauthorizedをfalseに設定すると、コードは機能します。 だから私はURLで正しいホスト名を渡しています。
これは、ターゲットドメインによって提供されるAPIキーを使用することで軽減できると思います。
参考までに、リクエストの転送中にこのエラーが発生しました。
request({host: 'something.com'... headers: req.headers...
を使用しました。最初は、ヘッダーにhost: 'localhost'
が原因であることに気づいていませんでした。 私はそれを交換しました、そして今それはOKを確認します。
私の問題は解決しました。 req.headerを変更してホストを変更するのを忘れました。
最も参考になるコメント
このようなものはひどいです