如何确定使用 sslvSSLv23 时协商了哪种 TLS/SSL 协议?

问题描述 投票:0回答:2

我正在使用 TIdSSLIOHandlerSocketOpenSSL 打开 TLS/SSL 连接。我目前想支持 tls 1.0 到 1.2。

我像这样初始化IOHandler。

TIdSSLIOHandlerSocketOpenSSL(FSocket.IOHandler).SSLOptions.SSLVersions := [sslvTLSv1_2,sslvTLSv1_1, sslvTLSv1];

连接建立后,如何获取连接协商的协议? (都是为了确保客户端和测试服务器的配置正确,并最终用于统计目的)。

连接后我查看了

SSLContext.Method
,但连接后仍然显示
sslvSSLv23
SSLContext.SSLVersions
显示
[sslvTLSv1_2,sslvTLSv1_1, sslvTLSv1]

那么我如何获取这些信息?

delphi indy indy10
2个回答
5
投票

SSL/TLS 会话建立后,具体协商的协议位于

TIdSSLIOHandlerSocketOpenSSL.SSLSocket.Cipher.Version
属性中。 OpenSSL还有一个
SSL_get_version()
函数(Indy没有使用,但可以直接调用)。


0
投票

尝试 TIdSSLIOHandlerSocketOpenSSL.SSLSocket.Cipher.Description

© www.soinside.com 2019 - 2024. All rights reserved.