【发布时间】:2016-10-01 22:29:49
【问题描述】:
在 SSL 握手期间,客户端加密生成的 pre-master secret 使用服务器的公钥并发送到服务器。服务器和 客户端执行步骤以生成具有约定的主密钥 密码。客户端和服务器都使用主密钥 生成会话密钥,它们是对称密钥,用于 加密和解密 SSL 会话期间交换的信息
http://www.symantec.com/connect/blogs/how-does-ssl-work-what-ssl-handshake
如何获取该对称密钥,以便将其存储到数据库中并在每次客户端连接时使用相同的?
服务器和客户端都应该保存该密钥,并且不再进行握手过程。下次(即使在断开连接后)他们应该直接使用对称密钥通过 https 开始通信。
简而言之,我希望 SSL 会话永远持续下去。
编辑 Android 设备是客户端。每当客户端上线时,客户端-服务器只交换几个字节的数据。在这种情况下,SSL 是开销,不是吗?
【问题讨论】:
-
通常是个坏主意。使用重复使用密钥的持续会话是不好的做法,因为您可以长时间进入连接。你在连接什么?你从哪里连接?您使用的是哪种协议?
-
那行不通,你只能使用 SSL 会话缓存,但是如果客户端没有向你发送旧会话 ID,则必须创建一个新会话。这就是 SSL/TLS 指定的方式 - 如果您不希望这样,则不能使用 SSL/TLS。
-
如果您只需要一个共享对称密钥,只需在客户端生成一个并通过 SSL 连接将其发送到另一端。使用 SSL 会话生成的对称密钥确实没有什么可罚款的。
-
@zaph 那不叫 https...
标签: java ssl https tomcat8 jsse