IdHTTP设置SSL证书,乱码问题也解决了

Posted 朝闻道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IdHTTP设置SSL证书,乱码问题也解决了相关的知识,希望对你有一定的参考价值。

要跟银行做接口,需要使用delphi来post数据,但对方提供的是https开头的网址,需要使用证书,对方已提供证书了,但是还是调用不成功,使用的是idhttp和TIdSSLIOHandlerSocketOpenSSL来post的,indy 版本是10.5.5, OpenSSL的dll版本是openssl-1.0.0-i386-win32。现在报的错是:“could not load certificate error:0906D06C:PEM routines:PEM_read_bio:no start line”。

对方提供了好几个证书,后缀名有:.cer,.pem,.pfx ,不知道到底要用哪一个,而且对方没有delphi版本的Demo,只有 java和C#的。网上查了两天资料,索然无获,不知道如何下手,才能通讯成功。
坛里那位朋友有这方面的开发经验,请不吝指点一二,多谢了!

设置以下两个属性

证书文件:
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.CertFile
密钥文件:
IdSSLIOHandlerSocketOpenSSL1.SSLOptions.KeyFile 

并在OnGetPassword事件当中返回密钥的保护密码即可。

PEM格式证书的起始行和结束行:

引用
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----


PEM格式私钥的起始行和结束行:

引用
-----BEGIN RSA PRIVATE KEY-----
......
-----END RSA PRIVATE KEY-----

 

pfx格式的证书也可以通过OpenSSL.exe这个实用工具转换成有效的PEM格式。

引用
openssl.exe pkcs12 -in 证书.pfx -out 证书和密钥.pem

--------------------------------------------------------------------------------

乱码问题也解决了
关键代码就在这三行
    RsltStrm:=TStringStream.Create(‘‘,TEncoding.UTF8);
    IdHTTPClient.Post(‘www.abcc.com/abc‘,tmpStrList,RsltStrm);
    tmpStrList.Text:=RsltStrm.DataString;
多谢各位朋友!!!

 

http://bbs.csdn.net/topics/350164870

以上是关于IdHTTP设置SSL证书,乱码问题也解决了的主要内容,如果未能解决你的问题,请参考以下文章

bcb中idhttp获取网页数据的中文显示乱码

charles乱码问题

Mac下Charles Contents乱码解决办法

Delphi用idhttp向用gbk编码的网站Post过去的数据在网站的网页显示成乱码怎么解决?

delphi7 用 idhttp.get 抓取网页显示乱码

解决dos窗口乱码问题