Socket.IO TLS 要求 key/cert
Socket.IO TLS requiring key/cert
我有一个来自授权服务器的 CA
。我的 HTTPS
和 WebSocket
设置如下:
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);
})
现在,我的客户必须注册一个帐户。当他们这样做时,我想为他们创建一个 private/public 密钥,并使用我拥有的 CA
对其进行签名。然后他们必须将它们用于任何网络套接字连接。如果没有提供这些,我什至不想允许连接。
我现在的客户是:
io.connect(url, {secure: true, 'force new connection': true});
但我不知道如何 A) 将密钥传递给服务器,以及 B) 如果这可能的话?
如果您谈论的是浏览器,则客户端证书和私钥必须安装在浏览器或 OS 证书存储中(取决于所使用的浏览器)。安装后,浏览器会自动发送证书。
遗憾的是,客户端证书安装不是一个用户友好的过程。
如果您的客户端是节点进程,则客户端证书选项为 (finally) added in socket.io 1.3.
不要忘记验证所提供的证书是否与您系统中的用户帐户匹配。 rejectUnauthorized
仅验证客户端提供了 a 由任何受信任的 CA 颁发的证书。
您是说您的服务器有 SSL 证书吗?您不能用它签署新证书。没有受信任的根 CA 会发出允许第三方签署证书而无需很长的过程和大量资金的证书。
您可以 运行 您自己的 CA 来签署客户端证书。您必须将服务器配置为信任您的客户端证书颁发 CA(通过 createServer
中的 ca
选项),因为默认情况下它将不受信任。
我有一个来自授权服务器的 CA
。我的 HTTPS
和 WebSocket
设置如下:
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);
})
现在,我的客户必须注册一个帐户。当他们这样做时,我想为他们创建一个 private/public 密钥,并使用我拥有的 CA
对其进行签名。然后他们必须将它们用于任何网络套接字连接。如果没有提供这些,我什至不想允许连接。
我现在的客户是:
io.connect(url, {secure: true, 'force new connection': true});
但我不知道如何 A) 将密钥传递给服务器,以及 B) 如果这可能的话?
如果您谈论的是浏览器,则客户端证书和私钥必须安装在浏览器或 OS 证书存储中(取决于所使用的浏览器)。安装后,浏览器会自动发送证书。
遗憾的是,客户端证书安装不是一个用户友好的过程。
如果您的客户端是节点进程,则客户端证书选项为 (finally) added in socket.io 1.3.
不要忘记验证所提供的证书是否与您系统中的用户帐户匹配。 rejectUnauthorized
仅验证客户端提供了 a 由任何受信任的 CA 颁发的证书。
您是说您的服务器有 SSL 证书吗?您不能用它签署新证书。没有受信任的根 CA 会发出允许第三方签署证书而无需很长的过程和大量资金的证书。
您可以 运行 您自己的 CA 来签署客户端证书。您必须将服务器配置为信任您的客户端证书颁发 CA(通过 createServer
中的 ca
选项),因为默认情况下它将不受信任。