Indy组件中OpenSSL SSL_CTX_NEW返回"null ssl method passed"错误排查
Indy 2015年12月版本:OpenSSL SSL_CTX_NEW返回"null ssl method passed"错误分析
问题场景
使用2015年12月版本的Indy组件时,设置多版本SSL集合后触发SSL_CTX_NEW错误,返回信息为"null ssl method passed"。
相关代码
TIdSSLIOHandlerSocketOpenSSL(ASMTP.IOHandler).SSLOptions.SSLVersions := [sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
根因排查
问题出在TIdSSLOptions.SetSSLVersions方法:
- 当设置多个SSL版本而非单个版本时,该方法会强制将内部的
fMethod赋值为sslvSSLv23 - 若当前环境中
sslvSSLv23版本不可用,TIdSSLContext.SetSSLMethod会返回nil,最终导致SSL_CTX_NEW触发"null ssl method passed"错误
现状说明
针对该问题的相关解决方案目前已被回滚。
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

