一尘不染

在PHP SoapClient中禁用证书验证

php

简介:
有没有一种方法可以强制PHP中的内置SoapClient-class通过HTTPS连接到具有无效证书的服务器?

我为什么要这样做?
我已经在没有DNS条目或证书的服务器上部署了新应用程序。我想 设置DNS条目和修复证书 之前
尝试使用SoapClient连接到它,而最合理的方法似乎是使客户端在测试过程中忽略证书。

我是否没有意识到这是巨大的安全风险?
这仅用于测试。服务投入生产后,将有一个有效的证书,并且客户端将被迫对其进行验证。


阅读 395

收藏
2020-05-26

共1个答案

一尘不染

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
]);
2020-05-26