使用带有TLS的Node.js获取HTTP主机名错误

时间:2016-05-05 22:33:08

标签: node.js websphere-liberty tls1.2

我正在尝试编写一个简单的Node.js服务器应用程序,它将接受客户端请求,并允许我更改要使用的TLS / SSL协议。它适用于浏览器(Firefox)。

但是,当我从WebSphere Liberty Profile调用Node.js服务器时,无论我尝试使用哪种TLS / SSL协议,我都会收到非常令人困惑的错误消息:

[ERROR   ] IOException invoking https://dlwester:32080/W3CookieServiceEmulator/workplace/services/w3cookie/callback/auth_data: HTTPS hostname wrong:  should be <dlwester>  

正如你所看到的,它告诉我我使用了错误的主机名,但它告诉我我应该使用的主机名是我已经使用的。我甚至尝试使用端口443,因此我不需要指定端口,但它仍然给我相同的错误消息。

我不确定错误是使用Node.js还是我的WLP代码(使用JAX-RS客户端)。我没有在Node.js中找到绕过验证主机名的方法。

var options = {
    key: 'my.key',
    cert: 'my.cert',
    ciphers: 'TLSv1.2,TLSv1.1,TLSv1.0,SSLv3',
    honorCipherOrder: true,
    rejectUnauthorized: false
}
server = https.createServer(options, requestListener);

所以我猜这是我的第一个问题 - 我可以绕过主机名验证吗?

是否有其他人遇到此错误,并知道绕过它的方法?

1 个答案:

答案 0 :(得分:0)

这是客户端验证主机名,而不是服务器。您从未提及证书中使用的主机名 - 如果它与您用于从客户端解决的主机名不匹配:修复证书。