如何在php中加密每个soap请求

Sha*_*han 11 php encryption wss soap

我无法在PHP中创建加密的SOAP请求.根据文档,我将每个请求加密到支付网关.我生成了一个CSR并将其发送给证书颁发机构.他们向我发回了域名证书和CA证书.最大的问题是文档不适用于PHP.根据文件:

Web服务受WS-Security Sign和加密策略保护

经过很长一段时间的搜索,我发现了一个来自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);
Run Code Online (Sandbox Code Playgroud)

更新

我将键定义为:

define('PRIVATE_KEY', 'server_prvate_key.key');
define('CERT_FILE', 'domain_cert.cer');
define('SERVICE_CERT', 'CA.cer');
Run Code Online (Sandbox Code Playgroud)

这个定义有什么问题(请参阅上面的GIT链接)?

raf*_*rsr 6

你尝试过使用卷曲吗?

使用以下选项设置证书:

    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
Run Code Online (Sandbox Code Playgroud)

我使用加密连接到支付网关和使用curl的其他服务,并像魅力一样工作.