我有一個需要從客戶端安全(https
)連接的node.js
基於Web的應用程序。我想要的是,在某些路徑上,客戶端證書身份驗證是必需的,而不是其他路徑。Node.js的客戶端證書身份驗證僅
舉例來說。如果用戶去https://www.example.com/main服務器不需要客戶端證書認證(並因此瀏覽器不會問任何東西)。但是,如果用戶導航到https://www.example.com/secure,那麼客戶端證書認證將是必需的(並且因此瀏覽器將彈出用於選擇使用哪個證書的對話框)。
我怎樣才能做到這一點。我能夠強制客戶端證書認證,如果我通過requestCert:true
和rejectUnauthorized:true
到https.createServer
選項。這種方法的問題是每個路徑都需要客戶端證書。
客戶端證書是SSL握手的一部分;我不確定你可以做你想做的。 – Joe
@Joe:這就是我所害怕的。但我見過這樣做的網站。首先,這些應用程序會顯示一個頁面,要求用戶插入智能卡(客戶端證書所在的位置)。當您按「確定」時,應用程序會將用戶重定向到需要客戶端證書的相同應用程序中的另一個路徑。此時瀏覽器會顯示一個對話框供用戶選擇使用的證書。那麼,也許有辦法以某種方式在同一連接中強制進行新的握手? – Jukka
我有辦法解決這個問題,但我不想使用它。一種解決方案是在同一個應用程序中使用兩個不同的監聽器(不同的端口)。另一個需要客戶端證書認證,另一個不需要。這種方法的問題是,我必須爲第二個端口使用非標準端口。這會導致某些客戶需要重新配置其防火牆以允許連接到該端口。 – Jukka