摘要:
有没有办法强制 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
]);

文档:
  • stream_context_create()
  • HTTP context options
  • SSL context options
  • 关于php - 在 PHP SoapClient 中禁用证书验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8443618/

    10-16 23:07