Назад | Перейти на главную страницу

Перенаправление Apache HTTP на HTTPS работает для псевдонима, но не для имени сервера

Я создал сертификат SSL с помощью Let's Encrypt.
Сертификат установлен, и на него есть ссылка в конфигурационном файле Apache.
Конфигурация Apache предоставляет ServerName (например, example.com) и ServerAlias ​​(например, www.example.com). Оба они указаны в сертификате SSL, что подтверждается выводом certbot certificates команда.

Конфигурация Apache также содержит перенаправление с HTTP на HTTPS.
RedirectMatch permanent ^/(.*) https://example.com/$1

Проблема в том, что перенаправление происходит только для псевдонима (www.example.com). Запросы к example.com приводят к простому ответу 200 OK.

Запрос на псевдоним:

$ curl -I www.example.com
HTTP/1.1 301 Moved Permanently
Date: Sun, 01 Mar 2020 19:13:57 GMT
Server: Apache/2.4.29 (Ubuntu)
Location: https://example.com/
Content-Length: 325
Content-Type: text/html; charset=iso-8859-1

Запрос фактического значения ServerName:

curl -I example.com
HTTP/1.1 200 OK
Date: Sun, 01 Mar 2020 19:16:43 GMT
Server: Apache/2.4.29 (Ubuntu)
Last-Modified: Sun, 23 Feb 2020 00:03:31 GMT
ETag: "2aa6-59f32fc296ba5"
Accept-Ranges: bytes
Content-Length: 10918
Vary: Accept-Encoding
Content-Type: text/html

В <VirtualHost *:80> и <VirtualHost *:443> разделы конфигурационного файла идентичны, за исключением перенаправления в разделе *: 80 и строк SSL в разделе *: 443:

SSLCertificateFile /etc/letsencrypt/live/example/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

Я упустил что-то очевидное или я просто заблудился? :-) Спасибо

Догадаться! :-) Размещать здесь ответ на случай, если какая-нибудь другая бедняжка совершит ту же ошибку, что и я.

Оказывается, был <VirtualHost *:80> вход в 000-default.conf с тем же именем сервера (ServerName example.com). В 000-default.conf файл не включает директивы конфигурации SSL.

Похоже, что если то же самое ServerName отображается в нескольких включенных конфигурационных файлах Apache, приоритет которых не определен.

Я просто изменил ServerName директива в 000-default.conf чтобы включить имя хоста и перезапустить Apache. Задача решена.