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的方式吗?
您遇到的问题是.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文件是正确的.