Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在使用tls时使fsockopen忽略证书_Php_Ssl - Fatal编程技术网

Php 如何在使用tls时使fsockopen忽略证书

Php 如何在使用tls时使fsockopen忽略证书,php,ssl,Php,Ssl,在PHP7.0中,当使用fsockopen进行连接以打开https连接时(托管在同一数据库中) 主机),使用主机名,如tls://foo.localhost,我收到一个错误 看起来像 fsockopen(): Peer certificate CN="bar" did not match expected CN="foo.localhost" 连接未打开 同样的代码在PHP5.5中工作(即不太严格地检查证书)。我愿意 并不真正关心验证证书(此代码在单元测试和 集成套件,仅连接到本地主机)。测试

在PHP7.0中,当使用fsockopen进行连接以打开https连接时(托管在同一数据库中) 主机),使用主机名,如
tls://foo.localhost
,我收到一个错误 看起来像

fsockopen(): Peer certificate CN="bar" did not match expected CN="foo.localhost"
连接未打开

同样的代码在PHP5.5中工作(即不太严格地检查证书)。我愿意 并不真正关心验证证书(此代码在单元测试和 集成套件,仅连接到本地主机)。测试需要针对 不过,http和https

我知道在使用
file\u get\u contents
时如何禁用这些检查


使用fsockopen时,如何禁用对等证书验证?

fsockopen
不提供忽略对等证书错误的方法

你必须使用。可用的ssl/tls上下文选项可用

未经对等验证就打开套接字的示例

$context = stream_context_create([
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false
    ]
]);

$hostname = "tls://foo.localhost:8123";
$socket = stream_socket_client($hostname, $errno, $errstr, ini_get("default_socket_timeout"), STREAM_CLIENT_CONNECT, $context);

verify_peer
会影响这一点吗?@lvaroGonzález,我不知道如何将上下文传递给
fsockopen
从未使用过套接字,我认为应该可以。如果没有,请尝试手册页面中建议的功能:“该功能类似,但提供了更丰富的选项集,包括非阻塞连接和提供流上下文的能力。”@lvaroGonzález,context_set_default不适用于
fsockopen
。最有可能的方法是
stream\u socket\u client
(我不情愿,因为
fsockopen
是我需要使用的不太现代的测试库的核心)。感谢您指出。如果出现一些奇怪的开发主机名,则可能需要正确的选项“verify_peer_name”=>false。如何使用stream_socket_客户端而不是fsockopen指定端口?@ShadiNamrouti您可以在$hostname中包含端口,例如
$hostname=”tls://foo.localhost:8123";