我正在使用 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]
。
那么我如何获取这些信息?
SSL/TLS 会话建立后,具体协商的协议位于
TIdSSLIOHandlerSocketOpenSSL.SSLSocket.Cipher.Version
属性中。 OpenSSL还有一个SSL_get_version()
函数(Indy没有使用,但可以直接调用)。
尝试 TIdSSLIOHandlerSocketOpenSSL.SSLSocket.Cipher.Description