密码的Node.js TLS请求"/>
具有特定密码的Node.js TLS请求
我有一个Node.js应用,需要检查外部资源的TLS兼容性。在发出外部TLS请求时,我需要限制Node.js将使用的特定密码。我正在寻找实现此目的的示例代码。
更多信息:苹果需要在iOS 9 all outbound connections be encrypted中使用,并且允许的密码列表受到限制。
可接受的密码是:
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
我的目标是建立一个可以检查以确保外部服务器满足Apple要求的服务。
回答如下:您可以仅使用该密码列表连接到每个资源。如果连接成功,则您知道正在使用其中一种密码,因此将其签出。可以通过ciphers
属性设置唯一的密码列表。例如:
ciphers
您还可以通过在节点v10.16.0或更高版本中设置var ciphers = ['TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA',
'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',
'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA',
'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384',
'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256',
'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA'].join(':');
tls.connect({
host: 'example',
port: 443,
ciphers: ciphers
}, function() {
// Success!
}).on('error', function(err) {
// Unsuccessful! You may check `err` to make sure it wasn't an unexpected
// error like ECONNREFUSED
});
属性或secureProtocol
和secureProtocol
属性来限制使用的协议。例如,要使用TLSv1.2:
minVersion
更多推荐
具有特定密码的Node.js TLS请求
发布评论