加载外部实体 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"