我在macOS Sierra 10.12.3上使用Lazarus 1.6.4,使用最新的Indy HTTP库(今天更新),生成32位碳应用程序。
我的程序默认使用Apple在 / usr / lib / 中提供的 libcrypto.0.9.8.dylib 和 libssl.0.9.8.dlib 强> ...
我收到错误
项目....提出异常类' EIdOSSUnderlyingCryptoError'同 信息;连接SSL时出错。错误:14077410:SSL rouines:SSL23_GET_SERVER_HELLO:sslv3警报握手失败
解决此问题的最可靠方法是什么?
我的代码是这样的:
TmpOpenSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
// have had code rotate between
TmpOpenSSL.SSLOptions.SSLVersions := [sslvSSLv23];
TmpOpenSSL.SSLOptions.Metod := sslvSSLv23;
//
TmpOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1_2];
TmpOpenSSL.SSLOptions.Metod := sslvTLSv1_2;
//
TmpOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1_1];
TmpOpenSSL.SSLOptions.Metod := sslvTLSv1_1;
//
TmpOpenSSL.SSLOptions.SSLVersions := [sslvTLSv1_0];
TmpOpenSSL.SSLOptions.Metod := sslvTLSv1_0;
//
TmpOpenSSL.SSLOptions.Mode := sslmClient;
TmpOpenSSL.SSLOptions.VerifyMode := [];
TmpOpenSSL.SSLOptions.VerifyDepth := 0;
W.IOHandler := TmpOpenSSL;
无论使用哪种,我都会得到上述错误......有点奇怪
我不想自己分发OpenSSL - 而是使用Mac OS 或提供的东西(如果必须的话) - 即使对非专业用户也很容易安装
注意:Windows10 + Lazarus 1.6.4 + Indy(最新)+ OpenSSL(最新的fulgan二进制文件)工作
...
我认为这是相关的
EIdOSSLUnderlyingCryptoError Exception
问题在Windows上最新版本的Indy中解决,但在Mac上没有解决(可能是因为Mac上的OpenSSL库版本)