在客户端和服务器端使用相同的私钥进行SSL连接

Ben*_*Ben 1 java ssl ssl-certificate

我正在开发一个收集环境信息的电路板,并将其数据发送回单个服务器进行处理.与该服务器的唯一连接将由最终将被放入现场的板卡进行.大部分开发工作已经完成,但现在我想尝试确保所有连接.速度至关重要,因为数据是实时敏感的,并且电路板上有一个相当小的处理器(8Mhz).由于我对此有如此严格的控制,所以我想在WiFi芯片和接受连接的基于Java的服务器之间共享相同的私钥.这有望允许我通过SSL解密和加密消息,而无需在每次其中一个板连接时进行握手过程.正确?

我一直在试验几天没有运气.但在我深入钻洞之前,我想确保这是可能的.谢谢,任何建议将非常感谢.

Bru*_*uno 5

您似乎对whay SSL/TLS的工作感到困惑.

在握手期间,服务器提供其证书(除非使用匿名密码套件)向客户端证明其身份,然后同意共享密钥(通过交换预主密钥)与客户端.握手完成后,只有共享密钥用于加密.(这里有更多细节.)

服务器的私钥用于向客户端证明其身份(通过其证书).这样做的目的是防止MITM攻击.

将服务器的私钥提供给客户端只会允许任何客户端模拟服务器.

您无法真正避免握手,如果您进行多次连续连接,也可以使用会话恢复.您也可以使用TLS PSK(预共享密钥)密码套件(共享对称密钥,而不是私钥),但它们在Oracle JSSE提供程序中不可用.