Fopen接受自签名证书

时间:2015-09-28 10:06:30

标签: php fopen php-5.6 nuxeo

我想在php变量中获取我的页面的结果,但是fopen fonction返回false;

我认为这个错误可以是自签名的ssl certifacte的产品

fopen("https://192.168.1.1:8443", "rb"))
  

警告:fopen():SSL操作失败,代码为1. OpenSSL错误消息:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

接受所有证书是php ssl配置吗?

2 个答案:

答案 0 :(得分:10)

请参阅Error when loading external xml file with php via https : SSL3_GET_SERVER_CERTIFICATE

导出自签名证书PEM编码并将其附加到ca-bundle.crt(或者如果还没有ca-bundle.crt,只需重命名导出文件)

然后使用

$context = stream_context_create(array('ssl'=>array(
    'verify_peer' => true,
    'cafile' => '/path/to/ca-bundle.crt'
)));
$fd = fopen("https://192.168.1.1:8443", "rb", false, $context);

请参阅SSL context optionsstream_context_create

答案 1 :(得分:10)

检查一下 - http://php.net/manual/en/function.stream-context-create.php

<?php
$opts=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);  

$response = fopen("https://192.168.1.1:8443", 'rb', false, stream_context_create($opts));

echo $response; ?>