gpt4 book ai didi

node.js - Socket.IO TLS 需要 key /证书

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:46 25 4
gpt4 key购买 nike

我有一个来自授权服务器的 CA。我已经设置了我的 HTTPSWebSocket 设置如下:

var httpsOptions = {
cert: fs.readFileSync(config.ssl.server_cert),
key: fs.readFileSync(config.ssl.server_key),
requestCert: true,
rejectUnauthorized: true,
passphrase: config.ssl.server_password
};

httpsServer.listen(config.https_port, function () {
console.info("HTTPS server running on %d", config.https_port);
});

io = io.listen(server);
io.sockets.on('connection', function (socket) {
console.log("connected: " + socket.id);
})

现在,我的客户必须注册一个帐户。当他们这样做时,我想为他们创建一个私钥/公钥,并使用我拥有的 CA 对其进行签名。然后他们必须将它们用于任何网络套接字连接。如果没有提供这些,我什至不想允许连接。

此时我的客户是:

io.connect(url, {secure: true, 'force new connection': true});

但我不知道如何 A) 将 key 传递给服务器,以及 B) 如果这可能的话?

最佳答案

  • 如果您谈论的是浏览器,则客户端证书和私钥必须安装在浏览器或操作系统证书存储中(取决于所使用的浏览器)。安装后,浏览器会自动发送证书。

    不幸的是,客户端证书安装不是一个用户友好的过程。

  • 如果您的客户端是 Node 进程,则客户端证书选项为 ( finally ) added in socket.io 1.3 .

不要忘记验证提供的证书是否与您系统中的用户帐户匹配。 rejectUnauthorized仅验证客户端是否出示了由任何受信任的 CA 颁发的证书。


您是说您的服务器有 SSL 证书吗?您不能用它签署新证书。没有受信任的根 CA 会发出允许第三方签署证书的证书,而无需很长的过程和大量资金。

您可以运行自己的 CA 来签署客户端证书。您必须将您的服务器配置为信任您的客户端证书颁发 CA(通过 createServer 中的 ca 选项),因为默认情况下它是不受信任的。

关于node.js - Socket.IO TLS 需要 key /证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com