【发布时间】:2015-12-05 19:43:29
【问题描述】:
我有一个节点 js 应用程序在 Azure AMS 上作为移动服务运行。我一直在使用请求库对外部服务器进行 HTTPS 获取/发布 api 调用。直到几天前,当外部实体决定停止支持 TLS 1.0 及更低版本时,一切都可以正常工作。
我想知道是否有人知道 Azure AMS 阻止/失败 TLS 1.1/1.2 与外部主机通信的任何已知问题?该主机使用由 DigiCert 颁发的有效 SSL 证书。
在我的代码中,我已经尝试了一些方法来明确告诉 nodejs 使用 TLS 1.1 / 1.2,但没有奏效。
var httpRequest = require("request"),
https = require('https');
https.globalAgent.options.secureProtocol = 'TLSv1_2_method'; // Instructing to use TLS 1.2
....
httpRequest.post('https://external-api-url.com', {
'json': true,
'body': params,
'timeout': 20000,
'jar': false,
'headers': {
"Arr-Disable-Session-Affinity": true
}
}, function(err, response, body) {
// Code to handle response.
});
除了 globalAgent,我还尝试从 agentOptions 以及直接从 options 对象中设置 secureProtocol。这些方法都不起作用。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
我从未在 Node 上使用过 TLS 1.2,但最近在 ASP.NET WebAPI 上使用过。据我所知,如果您想使用 TLS 1.2,您需要 1) Win 08R2 或更高版本。 2) 更新注册密钥
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols,添加TLS 1.1\ClientTLS 1.1\ServerTLS 1.2\ClientTLS 1.2\Server与密钥Enabled = 0x01和DisabledByDefault = 0x00。也许你可以试一试。
标签: node.js azure ssl request tls1.2