Я'пытаюсь настроить SSL на моем веб-сервере apache2, но кажется, что он вообще не работает.
Я следовал руководству по созданию файлов cert с помощью openssl и правильно настроил /etc/apache2/sites-available/default-ssl.conf
.
Каждый раз, когда я пытаюсь открыть свой сайт с https, мой браузер отказывается подключаться из-за проблем безопасности. Он говорит, что я не настроил свой сайт правильно.
В моем /var/log/apache2/error.log
я получаю предупреждения, которые говорят, что мой сертификат сервера не содержит ID, который соответствует имени сервера.
[Mon Apr 10 11:03:24.041813 2017] [mpm_prefork:notice] [pid 1222] AH00169: caught SIGTERM, shutting down
[Mon Apr 10 11:03:30.566578 2017] [ssl:warn] [pid 661] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.579088 2017] [ssl:warn] [pid 1194] AH01909: 127.0.0.1:443:0 server certificate does NOT include an ID which matches the server name
[Mon Apr 10 11:03:31.592958 2017] [mpm_prefork:notice] [pid 1194] AH00163: Apache/2.4.25 (Raspbian) OpenSSL/1.0.2k configured -- resuming normal operations
[Mon Apr 10 11:03:31.593136 2017] [core:notice] [pid 1194] AH00094: Command line: '/usr/sbin/apache2'
Есть ли у вас идеи, как решить эту проблему? С уважением, спасибо!
Я заметил, что в последнее время это сообщение просматривается довольно часто, и, похоже, многие люди сталкиваются с той же проблемой, что и я. Если это так, то это может помочь вам.
Я следовал простому пошаговому руководству для создания SSL-сертификации для моего веб-сервера. Как и во многих других руководствах, результатом этого руководства был самоподписанный сертификат с использованием OpenSSL. Да, самоподписанный, в этом и была проблема. Браузер не мог доверять серверу из-за сертификата, подписанного им самим. Ну, я бы не стал делать ни того, ни другого...
Сертификат должен быть подписан внешним надежным центром сертификации (ЦС). Поэтому я наткнулся на Let's Encrypt, который делает всю работу за вас и даже проще в настройке, а самое лучшее: он абсолютно бесплатный.
Удалите старые файлы ssl cert, которые вы создали с помощью OpenSSL.
Откройте backports, чтобы получить клиент certbot на Debian. Вы должны знать, что это откроет дыру для недоработанного программного обеспечения! Устанавливайте пакеты только тогда, когда вы знаете, что делаете.
echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt-get update
sudo apt-get install python-certbot-apache -t jessie-backports
sudo nano /etc/apache2/sites-available/000-default.conf
<VirtualHost *:80>
. . .
ServerName example.com
ServerAlias www.example.com
. . .
</VirtualHost>
sudo apache2ctl configtest
sudo systemctl restart apache2
sudo certbot --apache
Все сертификаты Let's Encrypt действительны в течение 3 месяцев. Чтобы продлить срок действия, вы можете вручную выполнить
sudo certbot renew
Или автоматизировать эту службу как задание cron
sudo crontab -e
и введите следующую строку, чтобы вызывать обновление каждый понедельник в 2:30 утра.
. . .
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
Более подробное руководство вы можете найти здесь: https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-debian-8.
Если вы не видите других ошибок SSL, и если вы пробовали установить 'LogLevel debug' в файле httpd.conf, это сообщение об ошибке может также указывать на то, что в файле httpd.conf отсутствует 'Listen 443'.
Это не ошибки - это предупреждения. Вполне возможно запустить mod_ssl с сертификатом, который не соответствует определенным именам серверов, если у вас определен ssl-хост по умолчанию и общее имя в сертификате соответствует имени хоста, используемого клиентами для подключения.
В вашем случае последнее не похоже на правду. Как говорит Джейкоб, вам нужно указать правильное имя хоста в качестве общего имени (или псевдонима) когда вы создаете CSR.
Чтобы посмотреть, какое имя (имена) в настоящее время указано в сертификате:
openssl s_client -showcerts -connect ${HOSTNAME}:443
Если на машине установлено несколько сертификатов, обслуживаемых на одном IP-адресе, то:
openssl s_client -showcerts -connect ${HOSTIP}:443 -servername ${HOSTNAME}
(где значения ${...} являются заполнителями, которые следует заменить соответствующими значениями).