Ssl 在客户环境中启动客户机和服务器之间的安全交换

Ssl 在客户环境中启动客户机和服务器之间的安全交换,ssl,client-certificates,Ssl,Client Certificates,我与一家公司合作,该公司提供一个现场商业软件“生态系统”,多个客户端与家庭/母舰服务器进程通信,所有这些都安装在客户的场所。这一切都在防火墙后面,我们的一些通信通过指定端口上的防火墙。我们不能使用真正的证书颁发机构域证书,因为整个生态系统都是通过互联网进行防火墙的 最终,我们使用动态生成的客户端证书进行双向TLS通信。一旦设置好就可以了,但是每个客户端的环境都会在安装时生成一个新的CA,并且客户端证书是从CA证书生成的,因此在客户端证书在客户端上之前,进程最初不能使用TLS 我正试图想出一种方法

我与一家公司合作,该公司提供一个现场商业软件“生态系统”,多个客户端与家庭/母舰服务器进程通信,所有这些都安装在客户的场所。这一切都在防火墙后面,我们的一些通信通过指定端口上的防火墙。我们不能使用真正的证书颁发机构域证书,因为整个生态系统都是通过互联网进行防火墙的

最终,我们使用动态生成的客户端证书进行双向TLS通信。一旦设置好就可以了,但是每个客户端的环境都会在安装时生成一个新的CA,并且客户端证书是从CA证书生成的,因此在客户端证书在客户端上之前,进程最初不能使用TLS

我正试图想出一种方法来进行初始通信,以便在生成客户端证书时将客户端证书流式传输到客户端-客户端和服务器之间的一次性交换,以提供将用于所有后续通信的证书

当然,问题在于防止任何欺骗客户端恶意获取不应该获得的客户端证书(验证客户端)。我正试图找出如何在程序集中提供足够的数据,以便可以验证客户端是否可以进行一次性交换

我一直在考虑在共享DLL中的客户端和服务器中嵌入编译时对称密钥或公共证书,只用于一次性初始调用和混淆该DLL。因此,要进行初始TLS调用,客户端可以提供嵌入式证书,服务器将尊重它,它们以这种方式通信一次,服务器使用基于本地CA的新客户端证书进行响应。之后,所有通信都使用CA证书完成

我们可以分层使用其他措施,例如只允许从给定IP进行一次配置调用,预生成必须由客户端提供的许可证类型密钥等等。我错过了什么明显的东西吗?在使用自签名证书时,有没有更好的方法来做到这一点?用嵌入式证书混淆库是否合理有效

蒂亚