【发布时间】:2017-01-30 11:04:45
【问题描述】:
在 PHP7.0 中,使用 fsockopen 连接时打开一个 https 连接(托管在同一
主机),使用像 tls://foo.localhost 这样的主机名,我收到一个错误
看起来像
fsockopen(): Peer certificate CN="bar" did not match expected CN="foo.localhost"
连接未打开。
相同的代码在 PHP 5.5 中工作(即检查验证不那么严格)。我愿意 并不真正关心验证证书(此代码在单元测试中运行,并且 集成套件,仅连接到本地主机)。测试需要针对 不过,http 和 https。
我知道在使用file_get_contents 时如何禁用这些检查。
使用 fsockopen 时如何禁用对等证书验证?
【问题讨论】:
-
verify_peercontext option 会影响这个吗? -
@ÁlvaroGonzález,我不知道如何将上下文传递给
fsockopen -
从未使用过套接字,我认为stream_context_set_default() 应该可以工作。如果没有,请尝试fsockopen() 手册页中建议的函数:“函数stream_socket_client() 类似,但提供了更丰富的选项集,包括非阻塞连接和提供流上下文的能力。”跨度>
-
@ÁlvaroGonzález,context_set_default 不适用于
fsockopen。很可能stream_socket_client是要走的路(我很不情愿,因为fsockopen它是我需要使用的不是很现代的测试库的核心)。感谢您指出。