Монтаж

Монтаж

Я пытаюсь настроить SSL на моем веб-сервере Apache2, но, похоже, он вообще не работает.

Я следовал руководству по созданию файлов сертификатов с помощью OpenSSL и /etc/apache2/sites-available/default-ssl.confправильно их настроил.

Каждый раз, когда я пытаюсь открыть свой сайт с https, мой браузер отказывается подключаться из-за проблем безопасности. Он говорит, что я неправильно настроил свой сайт.

В моем случае /var/log/apache2/error.logя получаю предупреждения о том, что мой сертификат сервера не содержит идентификатора, соответствующего имени сервера.

[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'

Есть ли у вас какие-либо идеи, как это решить? Спасибо!

решение1

Хорошо, я заметил, что этот пост в последнее время просматривается довольно часто, и, похоже, многие люди сталкиваются с той же проблемой, что и я. Если так, то это может вам помочь.

Я следовал простому пошаговому руководству по созданию SSL-сертификации для моего веб-сервера. Как и во многих руководствах, результатом руководства, которому я следовал, стал самоподписанный сертификат с использованием OpenSSL. Дасамоподписанный, вот в чем проблема. Браузер не мог доверять серверу из-за его сертификата, который подписан им самим. Ну, я бы тоже не стал...

Сертификат должен быть подписан внешним надежным центром сертификации (CA). Поэтому я наткнулся наДавайте зашифруемкоторый сделает всю работу за вас, и его еще проще настроить, и самое лучшее: он абсолютно бесплатный.

Монтаж

1) Удалите старые файлы сертификатов SSL, которые вы создали с помощью OpenSSL.

2) Откройте бэкпорты, чтобы получить клиент certbot на Debian. Вы должны знать, что это откроет дыру для незаконченного ПО! Устанавливайте только те пакеты, когда вы осознаете, что делаете.

echo 'deb http://ftp.debian.org/debian jessie-backports main' | sudo tee /etc/apt/sources.list.d/backports.list

3) Обновите свою систему Linux.

sudo apt-get update

4) Установить certbot

sudo apt-get install python-certbot-apache -t jessie-backports

5) Настройте Apache ServerName и ServerAlias

sudo nano /etc/apache2/sites-available/000-default.conf

6) Отредактируйте файл конфигурации Apache

<VirtualHost *:80>
    . . .
    ServerName example.com
    ServerAlias www.example.com
    . . .
</VirtualHost>

7) Проверьте правильность синтаксиса

sudo apache2ctl configtest

8) Если файл конфигурации выглядит нормально, перезапустите сервер Apache.

sudo systemctl restart apache2

9) Настройте сертификат с помощью certbot и следуйте инструкциям на экране.

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

решение2

В моем случае я решил эту проблему, заменив в файле конфигурации Apache SSL для каждого соответствующего домена:

ServerName mydomain.com
ServerAlias www.mydomain.com

к :

ServerName www.mydomain.com
ServerAlias mydomain.com

Потому что мой сертификат для «www.mydomain.com», а не для «mydomain.com».

полный файл apache:

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerAdmin [email protected]
        ServerName www.mydomain.com
        ServerAlias mydomain.com
    DocumentRoot /home/mydomain.com/public_html
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|ico|png)$ \ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ \no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    <Directory />
        Options +FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /home/mydomain.com/public_html>
        Options -Indexes +FollowSymLinks +MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>


ErrorLog ${APACHE_LOG_DIR}/error.log

LogLevel warn
SSLCertificateFile /etc/letsencrypt/live/www.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/www.mydomain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

решение3

Если вы не видите других ошибок SSL и попытались установить «LogLevel debug» в файле httpd.conf, это сообщение об ошибке также может указывать на отсутствие «Listen 443» в файле httpd.conf.

решение4

Я недавно столкнулся с этой проблемой, когда истек срок действия моего самоподписанного сертификата. Я погуглил и просто скопировал команду для создания нового сертификата с одного веб-сайта.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/apache2/ssl/apache.crt

В моем конфигурационном файле Apache: /etc/apache2/sites-available/default-ssl.conf. Файл сертификата и файл ключа ссылаются на следующее имя файла.

    SSLCertificateFile  /etc/apache2/ssl/apache.crt
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Таким образом, ошибку, наблюдаемую в моем случае, было легче исправить, просто указав правильное расположение файла ключа сертификата при создании SSL-сертификата.

Итак, вот команда, которую мне следовало использовать и набрать правильно.

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Связанный контент