1
在PHP7.0時做出的fsockopen忽略證書,使用fsockopen連接打開HTTPS連接時(在同一 主機託管),使用主機名狀tls://foo.localhost
,我得到一個錯誤, 看起來像如何使用TLS
fsockopen(): Peer certificate CN="bar" did not match expected CN="foo.localhost"
連接未打開。
相同的代碼在PHP 5.5中工作(這是不太嚴格的檢查點)。我做的 並不真正關心驗證證書(這個代碼在單元測試中運行,而 集成套件只連接到本地主機)。儘管如此,測試需要依照 http和https運行。
我知道如何在使用file_get_contents
時禁用這些檢查。
如何在使用fsockopen時禁用對等證書驗證?
是否'verify_peer' [上下文選項]的
實施例(http://php.net/manual/en/context.ssl.php)影響本? –
@ÁlvaroGonzález,我不知道如何傳遞一個上下文到'fsockopen' – juanleon
從來沒有與套接字工作,我認爲[stream_context_set_default()](http://php.net/)應該工作。如果沒有,請嘗試在[fsockopen()](http://php.net/fsockopen)手冊頁中建議的函數:「函數[stream_socket_client()](http://php.net/manual/en /function.stream-socket-client.php)是相似的,但提供了更豐富的選項集,包括非阻塞連接和提供流上下文的能力。「 –