打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
delphi XE https接口 出错 Could not load SSL library
userphoto

2022.06.21 福建

关注

    之前编译一个小程序,定时向服务器(http://)通过进行Post上传文件,当客户的服务器换成(https://)时,Post出现“Could not load SSL library”提示,说明需要加载SSL库文件失败。

     问题原因:

    1、HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

 2、HTTPS:是以安全为目标的HTTP通道,是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

   3、由于http切换到HTTPS,因此当,网站使用HTTPS协议时,程序调不到库文件,出现“Could not load SSL library”出错信息。  

    网上搜索,找到解决办法:

    一、idhttp控件需要与“IdSSLIOHandlerSocketOpenSSL”控件配对使用,通过“IdSSLIOHandlerSocketOpenSSL”控件,调用SSL。

    操作:加入“IdSSLIOHandlerSocketOpenSSL”控件,并关联idhttp;

    二、TIdSSLIOHandlerSocket控件,调用OpenSSL Library库文件。主要调用,下面两个文件:

    “libeay32.dll”、

    “libssl32.dll”

    记住:这两个文件,要与网站的HTTPS版本相配合,不匹配还是要出错的,用户可以通过   http://indy.fulgan.com/SSL/ 下载。

Index of /SSL

    操作:下载,逐个解压测试,本人测试好几个版本都能使用。

    这二个Dll应放在执行文件存放的目录中。

    这是本人提供的SSL Dll文件包 openssl-0.9.8i-win32&win64.zip-互联网文档类资源-CSDN下载

    三、设置“IdSSLIOHandlerSocketOpenSSL”的SSlVersions参数

    1、目前有以下五个版本

   

   2、与版本相对就的Method,也是五种, 默认是sslvTLSv1。

    匹配,主要是应对服务器的支持,控件和SSL library”的支持,综合因素。这样,你可以试试。

    操作:加入二 个combobox取名cmbcmbSSLVersions和cmbMethod 提供选择:

case cmbSSLVersions.ItemIndex of0: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions  := [sslvSSLv2];1: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions  := [sslvSSLv23];2: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions  := [sslvSSLv3];3: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions  := [sslvTLSv1];4: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions  := [sslvTLSv1_1];5: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.SSLVersions  := [sslvTLSv1_2];end;case cmbMethod.ItemIndex of0: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvSSLv2;1: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvSSLv23;2: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvSSLv3;3: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvTLSv1;4: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvTLSv1_1;5: IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:= sslvTLSv1_2;end;

    这样通过配对测试,快速找到成功匹配。经测试:

sslvSSLv23
sslvTLSv1
sslvTLSv1_1
sslvTLSv1_2

    POST提交请求成功。

   注意:“IdSSLIOHandlerSocketOpenSSL”控件的SSLVersions参数,是个集合类型,可以设置几种版本同时加入这个参数:

 SSLOptions.SSLVersions := [ sslvSSLv23,sslvSSLv1,sslvSSLv1_,sslvSSLv1_1];

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
绝对经典(全国高校图书馆网站集锦) !
关于delphi中使用证书调用以https网站的问题
330部经典电影、名家讲座540讲、科普常识450部、文艺汇演150部在线观看
delphi idhttp访问https需要增加IdSSLIOHandlerSocketOpenSSL1
申请X.509证书并安装的过程
SNI概览
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服