SSL-сертификат неправильно настроен - PullRequest
0 голосов
/ 07 января 2020

В основном Facebook Скребок (https://developers.facebook.com/tools/debug/og/object/) сообщает, что:

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

Протестировал URL моего сайта здесь: https://whatsmychaincert.com/?mysite.com

и это говорит: мой сайт неправильно настроен. Это цепочка, которую он должен использовать.

Мне страшно скачивать файл цепочки с этого сайта, так как, я думаю, у меня уже есть все это с GoDaddy .

Возвращаясь к моей проблеме со скребком в Facebook. Я сделал поиск в Google и обнаружил, что ошибка Curl происходит из-за версии PHP. Как я проверил, у меня установлена ​​последняя версия PHP. Но я все же скачал cacert.pem с официального сайта и добавил в ту же папку, где находятся мои ssl-сертификаты (/ etc / ssl / certs). Затем отредактировал php .ini, расположенный / opt / bitnami / php / et c.

, и теперь он гласит:

 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. Таким образом, я отредактировал два пути для конфигурации 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>

1 Ответ

2 голосов
/ 07 января 2020

В отличие от браузеров PHP Curl не восстанавливает дерево сертификатов из других источников. Поэтому, если ваше дерево сертификатов неполное, CURL не может проверить сертификат вашего сайта.

Ваша конфигурация VirtualHost должна иметь следующее:

  • SSLCertificateFile - сертификат вашего сайта
  • SSLCertificateKeyFile - ключ для CertificateFile
  • SSLCertificateChainFile - файл, содержащий все промежуточные сертификаты от листа до root (поэтому curl может подключить ваш сертификат к сертификату в /etc/ssl/certs/cacert.pem)

Начиная с версии 2.4.8 вы можете поместить все сертификаты от листа до root в файл SSLCertificateFile (https://httpd.apache.org/docs/2.4/mod/mod_ssl.html#sslcertificatefile)

Вы можете проверить свою конфигурацию SSL, используя https://www.ssllabs.com/ssltest/index.html , который также сообщает о неполном дереве сертификатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...