如果连接是由浏览器完成的,socket.io(在服务器上)是否可以从客户端读取SSL证书? 我有一个html页面来启动一个长时间轮询节点服务器。 当来自客户端的requet涉及到一个节点的应用程序,Node.js的是能与此代码读取客户端证书:socket.io如何读取客户端证书
request.connection.getPeerCertificate()
然而,我试着用插座,而不是longpolling。
在上节点应用的插座功能我有这样的:
io.sockets.on('connection', function (socket) {
然而,这个功能里面,我不能使用
request.connection.getPeerCertificate()
,因为没有任何“请求”对象在这里。接下来是来自cient的套接字。我已经在控制台输出插座的所有内容,但我不能看到对应
request.connection.getPeerCertificate()
任何领域有没有办法来“强迫”客户端上的插座还包括证书/密钥连接时到服务器?
我发现了一些关于这个问题的资源。例如here。
大多数评论似乎告诉socket.io不能读取连接客户端上的证书。 第一篇文章看起来像一个工作。但我真的不明白如何实现这一点。 Tjhere在socket.io源代码中没有“io.Manager”。 如果我输出“io.Manager”到控制台然后我得到一个“未定义”
您可以尝试使用'https'强制进行认证检查。或者,您可以在连接'var socket = io.connect('https:// localhost',{secure:true})时使用'secure'选项;'这会强制客户端认证检查 – Ravi 2014-09-11 12:09:53
我已经在使用https。我还添加了secure:true标志。但它没有帮助。 – user3726562 2014-09-11 13:11:14