大家好 :) 我有一个启用了传入请求签名的 Axis2 WebService(Rampart 模块Signature
在InflowSecurity
设置中使用)。我正在尝试使用本地证书在 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 使用证书对请求进行签名?