【问题标题】:How to use PHP5 SoapClient::SoapClient() with client certificate?如何将 PHP5 SoapClient::SoapClient() 与客户端证书一起使用?
【发布时间】:2011-03-21 17:40:07
【问题描述】:

我需要将 PHP 的 SoapClient 与 myfile-ca.crt 一起使用。 如何告诉 SoapClient 构造函数使用客户端证书(crt 文件)?

我熟悉 php SoapClient,但我从来不需要使用安全的 soap 客户端。

感谢您的帮助

【问题讨论】:

    标签: php soap ssl certificate


    【解决方案1】:

    在构建您的 SoapClient 时,您可以传入一个配置数组作为第二个参数。该数组允许选项local_cert。 local_cert 选项应该指向证书文件(根据我的经验,需要绝对路径才能使其工作)。

    $wsdl = "service.wsdl";
    $cert = "c:\secure_cert\webservice.pem";
    $client = new SoapClient($wsdl, array('local_cert' => $cert);
    

    另请参阅SoapClient manual page 中的示例

    注意:我总是得到 .pem 文件;不确定 .crt 是否相同/工作方式相同...?

    【讨论】:

    • 非常感谢。当然,我之前也尝试过使用,但一直没有成功,可能是相对路径的原因。
    • 所以我需要从 crt 制作 pem 文件,不是吗?我发现这种方式: openssl x509 -in input.crt -out input.der -outform DER 然后 openssl x509 -in input.der -inform DER -out output.pem -outform PEM
    • 我开始收到新的(捕获的)异常:无法连接到主机不知道这真正意味着什么。有什么方法可以获取更多信息?
    • 异常对象本身还有什么?您是否已编译 OpenSSL(我假设您已经编译了,如果您到此为止)?您的服务器错误日志中是否有任何内容(或者是否有警告/错误)?恐怕除了通常的痛苦调试过程之外,我可以在这里添加任何有用的东西。
    • 请注意 PEM / CRT 问题;网络服务供应商给了我 PEM,所以这就是我所使用的。他们提供了示例代码(以上内容基于),除了相对路径问题之外,事情几乎“正常工作”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2010-12-24
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多