Request: 连接到 https 端点并获取:主机名/IP 与证书的替代名称不匹配

创建于 2015-09-18  ·  12评论  ·  资料来源: request/request

我正在尝试使用以下代码从我的本地主机连接到 heroku 上的外部 https REST 服务:

request(
            {
                url: config.get('host') +req.originalUrl,
                method: req.method,
            }, function (error, response, body) {

            })

我在回调中收到以下错误:

主机名/IP 与证书的替代名称不匹配:“主机:localhost。不在证书的替代名称中: DNS:_.herokuapp.com,
主机:本地主机。 不在证书的替代名称中: DNS:_.herokuapp.com,

如果我连接到本地安装的同一个服务,一切正常,所以它应该与 https 相关。

有什么帮助吗?

最有用的评论

这东西太可怕了

所有12条评论

您的请求config.get('host') +req.originalUrl的确切 URL 是什么?

我也收到了。 我正在使用自签名证书,但不想进行主机名检查。 我的请求中有这个

agentOptions: {
        ca: fs.readFileSync('ca.cert.pem')
    }

你如何设置ignoreHostname?

您是否尝试将 rejectUnauthorized 变量设置为 false?

`````` 请求({
url: config.get('host') +req.originalUrl,
方法:req.method,
拒绝未授权:假
},
功能(错误,响应,正文){

        })```

``````

如果rejectUnauthorized: false出现在首页文档的某个地方,那就太好了。

rejectUnauthorized: false不会让您接受任何服务器证书吗? 如果是这种情况,我认为它不是一个有效的解决方案。
我想通过确保证书由受信任的 CA(在我的情况下,它是我自己的 CA)签名来验证服务器。 我不想让整个事情沉默,让它变得不安全。

这东西太可怕了

您必须将服务器认证的CommonName与客户端的hostname匹配。

您必须将服务器认证的 CommonName 与客户端的主机名匹配。

为什么会这样? 为什么客户端关心服务器证书中存在的自己的主机名? 这是关于服务器的身份验证。 谢谢

仅供参考,我在转发请求时遇到了这个错误,我使用了request({host: 'something.com'... headers: req.headers...我没有意识到在标头中有host: 'localhost' ,这是罪魁祸首。 我更换了它,现在它验证正常。

我相信我遇到了同样的问题。 使用节点 6.10.3 并请求 2.88 时出现以下错误:

错误:主机名/IP 与证书的替代名称不匹配:“主机:https。不在证书的替代名称中:

我将其追溯到节点 tls.js 代码。 不知何故,“https”。 被请求作为主机名传递到节点。 如果我将 rejectUnauthorized 设置为 false,我的代码就可以工作。 所以我在 url 中传递了正确的主机名。

我相信这可以通过使用目标域提供的 api 密钥来缓解。

仅供参考,我在转发请求时遇到了这个错误,我使用了request({host: 'something.com'... headers: req.headers...我没有意识到在标头中有host: 'localhost' ,这是罪魁祸首。 我更换了它,现在它验证正常。

我的问题解决了。 我忘记修改 req.header 并更改主机。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

dcsan picture dcsan  ·  19评论

matthewgertner picture matthewgertner  ·  24评论

raeesaa picture raeesaa  ·  29评论

danielgindi picture danielgindi  ·  20评论

mike442144 picture mike442144  ·  33评论