如何在PHP
问题描述:
每个SOAP请求进行加密,我无法在PHP加密的SOAP请求。根据文档,我将每个请求都加密到支付网关。我生成一个CSR &发送给证书颁发机构。他们发回我的域名证书& CA证书。最大的问题是文档不适用于PHP。按照文件:如何在PHP
The web service is protected with WS-Security Sign and encryption policy
搜索很长一段时间后,我发现了一个helper class from Git但每当我尝试连接,我得到以下错误:
一般安全性错误(被发现的解密无证书(KEYID ))
FaultCode : wsse:InvalidSecurity
我试图设置SSL头如下:
$contextOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'cafile' => '../../certs/CA.cer',
'local_cert' => '../../certs/server.cer',
'local_pk' => '../../certs/private_key.key',
'verify_depth' => 0,
'allow_self_signed'=>true,
)
);
$sslContext = stream_context_create($contextOptions);
更新
我定义的键为:
define('PRIVATE_KEY', 'server_prvate_key.key');
define('CERT_FILE', 'domain_cert.cer');
define('SERVICE_CERT', 'CA.cer');
任何问题这个定义(请参阅上述GIT链接)?
答
您尝试使用curl?
使用下列选项来设置您的证书:
curl_setopt($ch,CURLOPT_CAINFO, 'CA.cer');
curl_setopt($ch,CURLOPT_SSLCERT, 'domain_cert.cer');
curl_setopt($ch,CURLOPT_SSLKEY, 'server_prvate_key.key');
curl_setopt($ch,CURLOPT_SSLCERTPASSWD, 'certificate_password'); //if have
我使用的支付网关和其他服务的加密连接使用curl和工程就像一个魅力。
+0
我试着卷曲,但林卷曲执行后得到假的,我检查发现错误的异常后:“WSSE:InvalidSecurityMissing的wsse:Security标头中的要求”,我不知道如何添加安全头球攻门!搜索一段时间,我发现了一些suername和密码的样本 – Shan
是否存在'cer' /'key'文件/路径?你对这项http://stackoverflow.com/questions/7147988/creating-a-php-soap-request-with-a-certificate –
@GabrielHeming是看看。该文件存在 – Shan
您需要定义将密钥和证书的完整路径,该助手类不会在它们是什么文件夹 – Capsule