【问题标题】:SSL cert misconfiguredSSL 证书配置错误
【发布时间】:2020-04-24 17:35:20
【问题描述】:

基本上 facebook 刮板 (https://developers.facebook.com/tools/debug/og/object/) 告诉我们:

Curl Error : SSL_CACERT SSL certificate problem: unable to get local issuer certificate

在这里测试了我网站的网址: https://whatsmychaincert.com/?mysite.com

这说明: 我的网站配置错误。这是它应该使用的链。

我不敢从这个网站下载链文件,因为我想我已经从 GoDaddy 获得了所有文件。

回到我的 facebook scraper 问题。我做了谷歌搜索,发现Curl错误是由于PHP版本造成的。正如我所检查的,我正在运行最新的 PHP。但我仍然从官方网站下载了 cacert.pem 并添加到我的 ssl 证书所在的同一文件夹中(/etc/ssl/certs)。然后编辑 php.ini 位于 /opt/bitnami/php/etc.

原来是这样的:

 curl.cainfo ="/etc/ssl/certs/cacert.pem"

重启 apache 问题依旧。所以我专注于解决 SSL 证书问题。

这是我的 default-ssl.conf 的样子:

SSLCertificateFile  /etc/ssl/certs/a639a4be86615af.crt
SSLCertificateKeyFile /etc/ssl/certs/mysite.key

SSLCertificateChainFile /etc/ssl/certs/mysite.com.chain.crt (downloaded from https://whatsmychaincert.com/)

SSLCACertificateFile /etc/ssl/certs/a639a4be86615af.pem

顺便说一句,我的网站显示 https 连接。但在 Firefox 中,我看不到任何加载的图像。是否与(无法获得本地颁发者证书)

有关

我的配置有什么问题?我该如何解决?

编辑: 我正在使用 wordpress bitnami set。所以我为 ssl 配置编辑了两条路径。 /etc/apache2/sites-available/default-ssl.conf/opt/bitnami/apache2/conf/extra/httpd-ssl.conf

我最新的 SSL 配置文件:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin hello@mysite.com
        ServerName mysite.com

        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        SSLEngine on

        SSLCertificateFile      /etc/ssl/certs/b8ad60af28cd1745.crt
        SSLCertificateKeyFile /etc/ssl/private/mysite.key
        SSLCertificateChainFile /etc/ssl/certs/b8ad60af28cd1745.pem

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
              SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
              SSLOptions +StdEnvVars
        </Directory>

    </VirtualHost>
</IfModule>

【问题讨论】:

    标签: php apache ssl ssl-certificate


    【解决方案1】:

    与浏览器不同,PHP Curl 不会从其他来源重建证书树。因此,如果您的证书树不完整,CURL 将无法验证您的站点证书。

    您的 VirtualHost 配置应具有以下内容:

    • SSLCertificateFile - 您的站点证书
    • SSLCertificateKeyFile - CertificateFile 的密钥
    • SSLCertificateChainFile - 包含从叶子到根的所有中间证书的文件(因此 curl 可以将您的证书连接到 /etc/ssl/certs/cacert.pem 中的证书)

    从 2.4.8 开始,您可以将所有从叶子到根的证书放入 SSLCertificateFile (https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile)

    您可以使用https://www.ssllabs.com/ssltest/index.html 测试您的 SSL 配置,它还会报告不完整的证书树。

    【讨论】:

    • 我正在使用 wordpress bitnami set。所以我为 ssl 配置编辑了两个路径。 /etc/apache2/sites-available/default-ssl.conf 和 /opt/bitnami/apache2/conf/extra/httpd-ssl.conf
    • 当我编辑位于 /opt/bitnami/apache2/conf/bitnami 的 bitnami.cof 文件时,它起作用了。由于使用了 bitnami 堆栈,因此使用其他 apache 配置并没有帮助。