Установленный SSL на сервере Apache, страница не отвечает - PullRequest
0 голосов
/ 07 октября 2018

Мой вопрос касается установки SSL.Я купил новый SSL для веб-сайта, который размещен на Ubuntu 16.04 с Apache 2.4.29.Мне удалось установить это, и я не получаю никаких ошибок, но моя страница не перенаправляет.Я следовал некоторым руководствам (DigitalOcean), но чувствую, что что-то упустил.

Я проверил файлы, доступные на сайтах (000-default.conf, default-ssl.conf & example.com.conf), и я не вижу ничего, что бросается в глаза, но я чувствую, что мигрируюупустить что-то.Я проверил состояние Apache, и я не получаю никаких ошибок, и я перезапустил службы несколько раз безрезультатно.

Вот общее описание того, что у меня есть.Я что-то пропустил?Требуется ли дополнительная информация для его настройки?

000-default.conf

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www
    Redirect "/" "https://example.com/"
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

default-ssl.conf

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
            ServerAdmin webmaster@localhost
            DocumentRoot /var/www
            SSLCertificateFile /root/example.com.crt
            SSLCertificateKeyFile /root/www.example.com.key
            SSLCACertificateFile /root/intermediate.crt

            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                            SSLOptions +StdEnvVars
            </FilesMatch>

            <Directory /usr/lib/cgi-bin>
                            SSLOptions +StdEnvVars
            </Directory>

            </VirtualHost>
 </IfModule>4

mydomain.com.conf

<VirtualHost *:443>
    ServerAdmin admin@somedomain.com
    ServerName mydomain.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/html
    Redirect permanent / https://example.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

1 Ответ

0 голосов
/ 08 октября 2018

Вот моя попытка комбинированной конфигурации.Обратите внимание, что у меня нет вашей настройки для его тестирования, но я использовал аналогичные конфигурации на производственных серверах.

Сначала определите ваш порт 80 VirtualHost (000-default.conf в вашей настройке):

Listen 80

<VirtualHost *:80>

    Redirect "/" "https://example.com/"

    LogLevel debug
    ErrorLog  "${APACHE_LOG_DIR}/80_error.log"
    CustomLog "${APACHE_LOG_DIR}/80_access.log" combined
</VirtualHost>

Нет необходимости в DocumentRoot, поскольку вы перенаправляете все.

Затем закомментируйте default-ssl.conf.Этот файл является примером того, что вы можете сделать, чтобы настроить виртуальный хост с поддержкой SSL.Если вы используете этот файл И еще один VirtualHost на порту 443, он всегда будет использоваться, поскольку Apache использует первый обнаруженный VirtualHost, который соответствует запросу клиента (здесь порт 443).

Другой момент, VirtualHost не являются«добавлены» друг к другу.Каждый из них не зависит от других и должен содержать полную конфигурацию.Это означает, что вы не можете поместить некоторые настройки в VirtualHost на порт 443, а некоторые - в другой и ожидать, что он будет работать.

Затем создайте файл example.com.conf:

Listen 443

<VirtualHost *:443>
    ServerName  example.com
    ServerAlias www.example.com

    ServerAdmin admin@example.com

    SSLCertificateFile    "/root/example.com.crt"
    SSLCertificateKeyFile "/root/example.com.key"
    SSLCACertificateFile  "/root/intermediate.crt"

    LogLevel debug
    ErrorLog  "logs/443_error_log"
    CustomLog "logs/443_access_log" combined

    DocumentRoot "/var/www/example.com/html"
    DirectoryIndex index.html
    <Directory "/var/www/example.com/html">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>

</VirtualHost>

Некоторые примечания:

  • Я поставил LogLevel на отладку, чтобы вы могли устранить неполадки, но, как только он заработает, измените его на ошибку.В противном случае вы быстро получите огромные файлы журналов!
  • По той же причине я разделяю журналы для порта 80 и порта 443. Каждый VirtualHost должен иметь свои собственные журналы.
  • Файлы сертификатов должны совпадатьдоменное имя.Не имя файла (хотя это облегчает сопоставление), а сам сертификат.
  • Если вы хотите, чтобы ваш сертификат покрывал example.com и www.example.com, оба имени должны быть добавлены к альтернативным именам в сертификате.
  • Я делаюне понимаю, почему у вас Redirect permanent / https://example.com в вашей конфигурации.Вы уже находитесь в https, порт 443 VirtualHost.
  • При желании можно добавить параметры, основанные на директивах <FilesMatch> в конфигурации ssl по умолчанию.

Эта настройкабудет гарантировать, что все http запросы будут перенаправлены на https://example.com.Затем он будет использовать: 443 VirtualHost, использовать соответствующий сертификат для этого домена и обслуживать содержимое из каталога DocumentRoot.

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