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

Leo*_*een 6 php soap certificate pfx pem

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

openssl pkcs12 -in cert.pfx -out cert.pem -nodes
Run Code Online (Sandbox Code Playgroud)

证书中有密码,因此我需要在获取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));
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

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

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

iam*_*der 8

您遇到的问题是.pem证书始终应该是加密文件.根据pScs12命令OpenSSL文档,当你使用-nodes它时没有加密任何东西,而是将每个节点放入纯文本,这导致.pem证书无效,你SoapClient无法解析无效文件.

要解决此问题,希望您没有删除原始文件cert.pfx,只需使用以下行重新转换它:

openssl pkcs12 -in cert.pfx -out cert.pem -clcerts
Run Code Online (Sandbox Code Playgroud)

你的cert.pem文件是正确的.