摘要:
有没有办法强制 PHP 中的内置 SoapClient 类通过 HTTPS 连接到具有无效证书的服务器?
为什么我要这样做?
我在没有 DNS 条目或证书的服务器上部署了一个新应用程序。我想在设置 DNS 条目和修复证书之前尝试使用 SoapClient 连接到它,最合理的方法似乎是让客户端在测试期间忽略证书。
难道我没有意识到这是一个巨大的安全风险吗?
这仅用于测试。当服务投入生产时,将有一个有效的证书,并且客户端将被迫对其进行验证。
最佳答案
SoapClient
在其参数中采用流上下文,您可以自己创建。这样你就可以控制传输层的几乎所有方面:
$context = stream_context_create([
'ssl' => [
// set some SSL/TLS specific options
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
]);
$client = new SoapClient(null, [
'location' => 'https://...',
'uri' => '...',
'stream_context' => $context
]);
文档:
关于php - 在 PHP SoapClient 中禁用证书验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8443618/