zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    JavaScript 工作必知(九)function 说起 闭包问题
    AngularJs(七) 模块的创建
    javaScript 工作必知(八) 属性的特性 值、写、枚举、可配置
    javaScript 工作必知(七) 对象继承
    javaScript 工作必知(六) delete in instanceof
    数据可视化产品示例和相关文章
    echarts的世界地图json
    webstorm使用svn
    初识产品运维
    UglifyJS 压缩选项
  • 原文地址:https://www.cnblogs.com/findumars/p/6435629.html
Copyright © 2011-2022 走看看