0

大家好 :) 我有一个启用了传入请求签名的 Axis2 WebService(Rampart 模块SignatureInflowSecurity设置中使用)。我正在尝试使用本地证书在 PHP 中调用它:

$client = new SoapClient(
    "http://localhost:8081/axis2/services/SomeWebService?wsdl", 
    array(
        "local_cert" => "C:\ws\MyProject\php\cert.pem",
        "trace" => 1));

var_dump($client->__soapCall(
    "someFunction", 
    array("someParameter" => "blabla"))); // line X

cert.pem 的内容:

-----BEGIN CERTIFICATE-----
....
-----END CERTIFICATE-----

这是我得到的错误:

Fatal error: Uncaught SoapFault exception: [soapenv:Server] 
org.apache.ws.security.components.crypto.Merlin cannot create instance in 
C:\ws\MyProject\php\index.php:X

问题是org.apache.ws.security.components.crypto.Merlin服务器端异常(我也在服务器日志中得到);但是当我删除"local_cert" => "C:\ws\MyProject\php\cert.pem"或更改它时,"local_cert" => "C:\ws\MyProject\php\thereisnofilehere.pem"我得到了完全相同的错误。

这告诉我 PHP 根本不使用证书。或者,我在这里遗漏了什么?如何确保 PHP 使用证书对请求进行签名?

4

0 回答 0