加载外部实体 SOAP SSL 失败
Failed to load external entity SOAP SSL
我使用 PEM 证书来验证 WSDL 请求。
$cert = '/etc/.../cert.pem';
$client = new SoapClient('https://somesservice.com/service.asmx?WSDL',
array( "cache_wsdl" => WSDL_CACHE_NONE,
"local_cert" => $cert));
我收到 加载外部实体失败 错误。
如果我尝试通过 curl
获取 wsdl
curl --key /etc/.../cert.key --cert /etc/.../cert.pem "https://somesservice.com/service.asmx?WSDL"
效果很好
编辑:
或者也许我的 PEM 证书必须有私钥部分?
我认为您应该发送证书的内容,例如:
$cert = '/etc/.../cert.pem';
$client = new SoapClient('https://somesservice.com/service.asmx?WSDL',
array(
"cache_wsdl" => WSDL_CACHE_NONE,
"local_cert" => file_get_contents($cert),
)
);
我必须将 KEY 文件的内容复制到我的 PEM 文件证书中,所以正确答案是:"YES, PEM file have to contains private key section"
我使用 PEM 证书来验证 WSDL 请求。
$cert = '/etc/.../cert.pem';
$client = new SoapClient('https://somesservice.com/service.asmx?WSDL',
array( "cache_wsdl" => WSDL_CACHE_NONE,
"local_cert" => $cert));
我收到 加载外部实体失败 错误。 如果我尝试通过 curl
获取 wsdl curl --key /etc/.../cert.key --cert /etc/.../cert.pem "https://somesservice.com/service.asmx?WSDL"
效果很好
编辑: 或者也许我的 PEM 证书必须有私钥部分?
我认为您应该发送证书的内容,例如:
$cert = '/etc/.../cert.pem';
$client = new SoapClient('https://somesservice.com/service.asmx?WSDL',
array(
"cache_wsdl" => WSDL_CACHE_NONE,
"local_cert" => file_get_contents($cert),
)
);
我必须将 KEY 文件的内容复制到我的 PEM 文件证书中,所以正确答案是:"YES, PEM file have to contains private key section"