证书不被接受。无法设置私钥文件

时间:2015-11-03 10:43:37

标签: php soap certificate pem pfx

我尝试通过SoapClient建立连接。我需要一份证书。我收到了.pfx证书。我使用以下命令创建.pem文件。

openssl pkcs12 -in cert.pfx -out cert.pem -nodes

证书中有密码,因此我需要在获取cert.pem文件之前输入密码。到目前为止,我认为这么好。

现在我尝试连接到WSDL服务。

$url = "https://test.website.com/webservices/transfer.asmx?WSDL";
$cert = '/path/to/cert.pem';
$passphrase = "12345678";                                               

$soapClient = new SoapClient($url, array('local_cert'=>$cert,'passphrase'=>$passphrase));

我收到以下错误:

  

(警告)SoapClient :: SoapClient():无法设置私钥文件`/ var / www / vhosts / memb...../ cert.pem'

我认为问题是证书。是我以正确的方式将.pfx转换为.pem的方式吗?

1 个答案:

答案 0 :(得分:8)

您遇到的问题是.pem证书始终应该是加密文件。根据{{​​3}},当您使用-nodes时,它没有对任何内容进行加密,而是将每个节点都放入纯文本中,从而导致.pem证书无效并且{{1}无法解析无效文件。

要解决此问题,希望您还没有删除原始SoapClient,只需使用此行重新转换它:

cert.pfx

并且您的openssl pkcs12 -in cert.pfx -out cert.pem -clcerts 文件将是正确的。