我有一个中央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