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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM