socket.io如何读取客户端证书

时间:2014-09-11 12:02:02

标签: node.js socket.io

如果连接是由浏览器完成的,socket.io(在服务器上)是否可以从客户端读取SSL证书? 我有一个html页面,它启动对节点服务器的长轮询。 当来自客户端的requet来到node-app时,node.js能够使用以下代码读取客户端证书:

request.connection.getPeerCertificate()

但是,我试图使用套接字而不是longpolling。

在node-app上的socket-function中我有这个:

io.sockets.on('connection', function (socket) {

但是,在此功能中我不能使用

request.connection.getPeerCertificate()

因为没有任何"请求"对象在这里。来自客户的插座是什么。我在控制台中输出了套接字的所有内容,但是我看不到任何与

对应的字段
request.connection.getPeerCertificate()

有没有办法强迫"强迫"客户端上的套接字在连接服务器时还包含证书/密钥?

我找到了一些有关此问题的资源。例如here

大多数评论似乎都说明socket.io无法在连接的客户端上读取证书。 第一篇文章看起来像是一个工作。但我真的不明白如何实现它。 Tjhere没有" io.Manager"在socket.io-源代码中。 如果我输出" io.Manager"到控制台我然后得到一个" undefined"

1 个答案:

答案 0 :(得分:0)

socket.client.request.client.getPeerCertificate()似乎可以获得证书(我知道!!)
此外,如果您已将https代理的rejectUnauthorized选项设置为false,则可以从此处检查authorized属性,以查看是否根据给定的CA授权客户端。