Fra*_*ois 9 php https certificate self-signed
基本上我有这个:
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]");
Run Code Online (Sandbox Code Playgroud)
其中[A]是具有"真实"证书的服务器上的某个URL,而[B]是仅具有自签名证书的URL.
使用[A]它工作正常,[B]我得到这个:
file_get_contents(): Failed to enable crypto
Run Code Online (Sandbox Code Playgroud)
这是一个相当不幸的错误消息应该是"服务器证书验证失败",但很好......
现在我想:"好吧,[B]是我的测试系统 - 我不关心证书"并将上下文改为:
"verify_peer" => false,
"allow_self_signed" => true,
Run Code Online (Sandbox Code Playgroud)
它现在应该接受任何服务器证书,甚至我的自签名证书.但它仍然是相同的行为 - [A]有效,[B]没有.为什么?
顺便说一句:我知道它适用于卷曲延伸,但我想在没有它的情况下击败它.
bry*_*yan 13
这适合我.祝好运.
$context = [ 'http' => [ 'method' => 'GET' ], 'ssl' => [ 'verify_peer' => false, 'allow_self_signed'=> true ] ];
$context = stream_context_create($context);
$resp = file_get_contents('https://site/', false, $context);
Run Code Online (Sandbox Code Playgroud)
小智 2
$contextOptions = array(
'ssl' => array(
'verify_peer' => true,
'allow_self_signed'=> true
)
);
$sslContext = stream_context_create($contextOptions);
Run Code Online (Sandbox Code Playgroud)
file_get_contents("https://...., false, $sslContext);
以上工作正常
| 归档时间: |
|
| 查看次数: |
10881 次 |
| 最近记录: |