php - SSL 证书配置错误

标签 php apache ssl ssl-certificate

基本上 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)。然后编辑位于/opt/bitnami/php/etc的php.ini。

它是这样写的:

 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.So 我为 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 Curl 不会从其他来源重建证书树。因此,如果您的证书树不完整,CURL 无法验证您的站点证书。

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

  • SSLCertificateFile - 您的站点证书
  • SSLCertificateKeyFile - 证书文件的 key
  • 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 配置它还报告不完整的证书树。

关于php - SSL 证书配置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59624571/

相关文章:

php - Laravel 数据库连接 : Selecting from database name in snake case

php - round() 返回不同的值

linux - Django 文件夹权限设置?

apache - 如何查找Tomcat服务器上运行了多少个网站?

ssl - ZeroSSL 积分(相同的域,但我无法续订)

ssl - 浏览器(例如 FF)何时发送 CONNET 方法而不是客户端问候?

php - 为什么 Yii-2 框架的自动生成 View (gii) 前有一个下划线?

php - Laravel 整体验证请求

java - Tomcat 添加 context-path 到 urls

android - https 获取服务器证书