首页 > 解决方案 > 带有自签名证书的 MAMP 中的 file_get_contents 失败

问题描述

我使用 file_get_contents() 在我的网站中包含 svg 文件。通常这在 http 上运行良好,但我将此站点设置为在本地使用 https。当我这样做时,我收到此错误:

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed on line 226

Warning: file_get_contents(): Failed to enable crypto on line 226

据我所知,这是因为证书是自签名的。我找到了一个在文件获取内容上禁用 SSL 检查的本地解决方案。我使用 cURL 发现了类似的东西。然而,这似乎是一个安全漏洞。有没有办法在不禁用 file_get_contents 或 cURL 中的 SSL 检查的情况下完成这项工作?

标签: phpsslsvgfile-get-contentsself-signed-certificate

解决方案


您需要允许使用自签名证书。为此,您需要定义一个自定义流上下文。

例子:

file_get_contents(
    'https://self-signed.badssl.com/',
    false,
    stream_context_create([
        'ssl' => [
            'allow_self_signed'=> true
        ]
    ])
);

推荐阅读