如果连接是由浏览器完成的,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"
答案 0 :(得分:0)
socket.client.request.client.getPeerCertificate()
似乎可以获得证书(我知道!!)
此外,如果您已将https代理的rejectUnauthorized
选项设置为false,则可以从此处检查authorized
属性,以查看是否根据给定的CA授权客户端。