【发布时间】:2017-05-03 11:22:51
【问题描述】:
我无法在 PHP 中发出加密的 SOAP 请求。根据文档,我加密了对支付网关的每个请求。我生成了一个 CSR 并将其发送给证书颁发机构。他们给我发回了域证书和 CA 证书。最大的问题是该文档不适用于 PHP。根据文件:
Web 服务受 WS-Security 签名和加密保护 政策
搜索了很长时间后,我找到了helper class from Git,但每当我尝试连接时,都会出现以下错误:
一般安全错误(未找到用于解密的证书 (KeyId))
故障代码: 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 链接)?
【问题讨论】:
-
cer/key文件/路径是否存在?你看过那个stackoverflow.com/questions/7147988/… -
@GabrielHeming 是的。文件存在
-
您需要定义密钥和证书的完整路径,帮助类不会猜测它们在哪个文件夹中
-
@Capsule 路径正确,密钥和证书内容也可用
-
你具体在哪里实现你引用的类?
标签: php encryption soap wss