如何在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链接)?

+0

是否存在'cer' /'key'文件/路径?你对这项http://*.com/questions/7147988/creating-a-php-soap-request-with-a-certificate –

+0

@GabrielHeming是看看。该文件存在 – Shan

+0

您需要定义将密钥和证书的完整路径,该助手类不会在它们是什么文件夹 – Capsule

您尝试使用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