所以,我今天早些时候遇到了一个问题,我写的客户端是在node
禁止,因为我连接的服务器使用的是自签名证书.所以,我去了,并像任何不知情的开发人员那样rejectUnauthorized: false
为我的tls.connect
命令添加了选项.
我现在的问题是,这对我来说意味着什么?我的TLS连接是否只是一个可能是TLS连接的vanilla TCP连接?写这个作为TLS流完全没用吗?
更重要的是,该服务器,您知道具有自签名证书的服务器吗?我的流在这里和那里之间是否真的加密了?
msc*_*dex 35
如文档中所述:
rejectUnauthorized
:如果true
,则根据提供的CA列表验证服务器证书.一个error
如果验证失败发射事件; err.code
包含OpenSSL错误代码.默认值:true
.由于您使用的是自签名证书,因此显然不会与内置CA匹配,因此默认情况下连接将被拒绝,因为它无法验证服务器是否是他们所说的人.
通过设置rejectUnauthorized: false
,你会说"我不在乎我是否无法验证服务器的身份." 显然这不是一个好的解决方案,因为它让你容易受到MITM攻击.
自签名证书的更好解决方案是ca
在连接客户端时为您的自定义CA 设置适当的值.此外,请确保您的host
值与服务器的自签名证书的公用名的值相匹配.例如:
var socket = tls.connect({
host: 'MyTLSServer',
port: 1337,
ca: [ fs.readFileSync('CA.pem') ],
}, function() {
// Connected!
});
// ...
Run Code Online (Sandbox Code Playgroud)
无论您使用rejectUnauthorized: false
还是设置ca
,连接都是加密的.
归档时间: |
|
查看次数: |
21638 次 |
最近记录: |