我无法在PHP中进行加密的SOAP请求。根据文档,我对每个支付网关请求进行了加密。我生成了CSR并将其发送给证书授权机构。他们发送回来了域证书和CA证书。最大的问题是文档不适用于PHP。根据文档:
Web服务受到WS-Security签名和加密策略的保护
经过长时间的搜索,我从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链接)?