我有一箇中央Web服務器(Node.js),並且還有幾個客戶端計算機(也運行Node)。這些客戶端將把數據推送到Web服務器,因此,爲了安全起見,客戶端將首先向主服務器註冊 - 生成它自己的唯一SSL私鑰/公鑰並將公鑰存儲在服務器上。Node.js:使用唯一公鑰對客戶端進行身份驗證(與Github SSH密鑰身份驗證類似)
現在,註冊後,客戶端每次嘗試與服務器通信時,都需要顯示其公鑰(?)來驗證自己。
我想了解如何去做這件事。我應該將客戶端的所有公鑰的內容存儲在常規數據庫集合中嗎?
我該如何讓客戶將他們的證書與他們的數據一起「呈現」?我看過幾個軟件包,比如client-certificate-auth,但我認爲這不會對我的用例有所幫助。
編輯:我忘了提及,我將通過HTTPS(端口443)進行通信,所以我認爲需要照顧實際的安全部分。我只是想確保沒有流氓的,未註冊的客戶端使用pub/private加密/ SSL證書將數據推入服務器。
您是否打算使用微妙的網絡加密API?我想我明白你想要什麼。我可以爲你寫一個例子...你希望javascript中生成的私鑰在客戶端保密,公鑰在服務器上安全地發送和存儲... – TylerY86
在認證過程中,客戶端說公鑰是由一個唯一的標識符標記。然後,服務器發出一個挑戰消息,使用用戶的公鑰加密消息。用戶用他的私鑰解密該消息,然後正確響應。這提供* no *安全性,您必須通過已建立的SSL連接執行此操作。它是傳統cookie和會話令牌的替代品,它只是不同的,更難的,而不是更好的。私鑰永遠不會到達服務器。 – TylerY86