Все мои шаги по настройке Apache (после чистой установки):

Все мои шаги по настройке Apache (после чистой установки):

Я пытаюсь настроить свой сайт так, чтобы он перенаправлял весь трафик на поддомен www и все http-запросы на https-запросы. Я знаю, что это не проблема с записями DNS (включая запись A для www и облака), потому что моя конфигурация работала отлично до тех пор, пока я не переустановил все примерно неделю назад. Проблема в том, что он ведет себя очень странно.

(Я заменил свой домен на «example.com», чтобы очистить публикацию.)

Что не работает:

http://example.com        - redirects to https://www.example.com,
                            but yields SSL_PROTOCOL_ERROR
http://cloud.example.com  - redirects to https://www.example.com/myfiles/,
                            but yields SSL_PROTOCOL_ERROR
https://example.com       - no redirect to www, and yields SSL_PROTOCOL_ERROR
https://www.example.com   - yields SSL_PROTOCOL_ERROR
https://cloud.example.com - no redirect to www, and yields SSL_PROTOCOL_ERROR

Что работает:

http://www.example.com - works like a dream

Все мои шаги по настройке Apache (после чистой установки):

sudo echo -e "\\ndeb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list

sudo apt-get update && sudo apt-get -y upgrade

# Because you'll want the latest certbot...
sudo apt-get -y install python-certbot-apache -t jessie-backports

sudo apt-get -y install apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql php5-cli

sudo a2enmod rewrite

Добавьте следующее (как root) в конец /etc/apache2/apache2.conf

ServerName example.com

<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://www.example.com/
</VirtualHost>
<Directory /var/www/(.*)>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</Directory>

Создание VirtualHosts и сертификатов

sudo tee /etc/apache2/sites-available/www.conf << "EOP"
<VirtualHost *:80>
  ServerName www.example.com
  Redirect / https://www.example.com/
</VirtualHost>
<VirtualHost *:443>
  DocumentRoot /var/www/html/
  ServerName www.example.com
</VirtualHost>
EOP

sudo a2ensite www

sudo service apache2 restart

sudo certbot --apache --domain www.example.com
#I apply this to /etc/apache2/sites/enabled/default-ssl.conf

sudo mkdir -p /var/www/html/myfiles/

sudo tee /etc/apache2/sites-available/cloud.conf << "EOP"
<VirtualHost *:80>
  ServerName cloud.example.com
  Redirect / https://www.example.com/myfiles/
</VirtualHost>
<VirtualHost *:443>
  ServerName cloud.example.com
  Redirect / https://www.example.com/myfiles/
</VirtualHost>
EOP

sudo a2ensite cloud

sudo service apache2 restart

sudo apache2ctl configtest #which reports everything's ok

Дополнительная информация о сервере:

На сервере установлена ​​чистая версия Debian 8.6 (amd64), а номер версии Apache — 2.4, поэтому проблема не в стабильности программного обеспечения.

Моя проблема с SSL

А cat /var/log/apache2/error.logвыдает мне следующее:

[ssl:warn] [pid 11737] AH01909: www.example.com:443:0 server certificate does NOT include an ID which matches the server name

решение1

Ваш сертификат ДОЛЖЕН соответствовать доменному имени.

sudo certbot --apache --domain www.example.com --domain cloud.example.com --domain example.com

Вы можете иметь до 100 SAN (альтернативных имен субъектов) на один сертификат LE.

Вы также можете использовать несколько сертификатов с одним и тем же IP-адресом с SNI (который должна поддерживать ваша версия openssl)

Вы также должны перечислить ваши параметры и файлы SSL перед</VirtualHost>

https://www.digitalocean.com/community/tutorials/how-to-secure-apache-with-let-s-encrypt-on-ubuntu-14-04

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