如果連接是由瀏覽器完成的,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