基本上我有這樣的:允許HTTPS自簽名證書包裝
function request($url) {
return file_get_contents($url, false, stream_context_create(array(
"ssl" => array(
"verify_peer" => true,
"allow_self_signed" => false,
)
)));
}
request("https://[A]");
request("https://[B]");
其中[A]是一個服務器上的某些URL與「真正的」證書和[B]是什麼在一個只有一個自簽名證書。
用[A]它做工精細,用[B]我得到這個:
file_get_contents(): Failed to enable crypto
這是本來應該像「服務器證書驗證失敗」,但罰款,而不幸的錯誤消息。 ..
現在我想了想道:「好了,[B]是我的測試系統 - 我不在乎證書」,改變的背景下進入這個:
"verify_peer" => false,
"allow_self_signed" => true,
它should現在接受ny服務器證書,甚至是我自己簽署的證書。但它仍然是一樣的行爲 - [A]起作用,[B]不起作用。爲什麼?
順便說一句:我知道它適用於捲曲擴展,但我想打敗它沒有它。
請定義*「With [A] it fine fine」* ...因爲這兩者都不應該工作,您沒有指定''cafile''或''capath''告訴PHP要使用哪些CA證書對於同行驗證,您已經禁止使用自簽名證書如果您確實使用了此處顯示的確切代碼,[A]和[B]都無法成功連接。 – rdlowrey