如何获得SSL握手中生成的对称密钥?
在SSL握手期间,客户端使用服务器的公钥将生成的预主密钥加密并发送到服务器。 服务器和客户端都执行步骤以使用约定的密码生成主密钥。 客户端和服务器都使用主密钥来生成会话密钥,这是对称密钥,用于对SSL会话期间交换的信息进行加密和解密
http://www.symantec.com/connect/blogs/how-does-ssl-work-what-ssl-handshake
如何获得对称密钥,以便我可以将其存储到数据库中,并且每次客户端连接时都使用相同密钥?
服务器和客户端都应该保存该密钥并且再也不要执行握手过程。 下次(即使在断开连接后),他们应该直接通过https使用对称密钥启动通信。
总之,我想SSL会话永远持续下去。
编辑 Android设备是客户端。 每当客户端上线时,客户端服务器只交换几个字节的数据。 SSL在这种情况下是开销,不是吗?
我如何得到这个对称密钥
你不能用Java。
这样我可以将其存储到数据库中,并且每次客户端连接时都使用相同的方法?
你不能在SSL。
服务器和客户端都应该保存该密钥并且再也不要执行握手过程。
你不能。 这将是不安全的。
下次(即使在断开连接后),他们应该直接通过https使用对称密钥启动通信。
你不能。
总之,我想SSL会话永远持续下去。
你不能,也不想。 这将是不安全的。
SSL在这种情况下是开销,不是吗?
这样的问题毫无意义。 比较什么? 您无法将安全解决方案与不安全的解决方案进行比较。 如果您不想安全,请不要使用SSL。
问题是:“如何获得对称密钥,以便我可以将其存储到数据库中,并且每次客户端连接时都使用相同的密钥?”。
如果您只需要一个共享对称密钥,只需在客户端上生成一个密钥,并通过SSL连接将其发送到另一端。 使用由SSL会话生成的对称密钥确实没有什么可以获得的。
使用由SSL生成的对称密钥和由您生成的对称密钥之间有什么区别?
同样,当使用TLS 1.2和完美的正向保密时,所使用的对称密钥不是客户端在初始交换中生成的对称密钥,而是使用Ephemeral Diffie-Hellman(ECDHE-RSA,ECDHE-ECDSA)生成的对称密钥。
你不能。 谈判的钥匙应该是私人的。 作为参考,我将链接发送给apache环境变量。 你会看到对称密钥不是其中之一
https://httpd.apache.org/docs/current/mod/mod_ssl.html
您可以获取sessionID,但如何重用会话必须留给SSL / TLS协议。 它具有自动重新协商选项,因此即使服务器已被丢弃,您也可以重新使用该会话。 该协议将决定您何时可以或不可以重复使用。
请参阅https://tools.ietf.org/html/rfc5746
链接地址: http://www.djcxy.com/p/21805.html上一篇: How do I get symmetric key generated in SSL handshake?
下一篇: How to create a custom secure socket connection between client/server?