#apache #ssl #redirect #apache2.4 #acme
#apache #ssl #перенаправление #apache2.4 #acme
Вопрос:
Официальная документация Apache httpd рекомендует не использовать mod_rewrite для принудительного применения SSL в домене. Вместо этого предпочтительнее использовать директиву перенаправления из mod_alias.
Следующая гипотетическая конфигурация виртуального хоста
- принудительно применяет https
- применяет URI (ы), отличные от www
- кэширует перенаправление в браузерах благодаря аргументу
permanent
status .
# Declare virtual host for http requests
<VirtualHost *:80>
# Declare name-based host
ServerName example.com
# Declare redirection to https://example.com/ utilizing mod_alias
Redirect permanent "/" "https://example.com/"
</VirtualHost>
Проблема: это также перенаправляет запросы на http://example.com/.well-known/acme-challenge/
URI (ы).
Это проблема, потому что, хотя Let’s Encrypt поддерживает выполнение задачи по использованию URL-адреса SSL, даже со сломанными сертификатами SSL, клиент ACME, который я использую, этого не поддерживает.
Как я могу исключить .well-known/acme-challenge/
каталог из Redirect
?
Я нашел подсказку на этой странице: Выражения на HTTP-сервере Apache.
Показан следующий пример фрагмента кода.
# Compare the host name to example.com and redirect to www.example.com if it matches
<If "%{HTTP_HOST} == 'example.com'">
Redirect permanent "/" "http://www.example.com/"
</If>
Итак, я попробовал следующее:
# Declare virtual host for http requests
<VirtualHost *:80>
# Declare name-based host
ServerName example.com
# Declare redirection to https://example.com/ utilizing mod_alias
# Exclude
<If "%{REQUEST_URI} != '!^/.well-known/.*
К сожалению, похоже, это не работает, что я делаю не так?
Я использую Apache httpd 2.4 на RHEL 8
Комментарии:
1.
RedirectMatch permanent ^(?!/.well-known/acme-challenge/).* "https://example.com"
кажется, это помогает, однако я не уверен, что это правильный подход к решению этой проблемы.
">
Redirect permanent "/" "https://example.com/"
</If>
# Utilize a single .well-known/acme-challenge directory across all domains
Alias "/.well-known/acme-challenge/" "/var/www/ssl.com/"
# Declare the /var/www/ssl.com directory
<Directory /var/www/ssl.com>
Options None
AllowOverride None
ForceType text/plain
</Directory>
</VirtualHost>
К сожалению, похоже, это не работает, что я делаю не так?
Я использую Apache httpd 2.4 на RHEL 8
Комментарии:
1.
RedirectMatch permanent ^(?!/.well-known/acme-challenge/).* "https://example.com"
кажется, это помогает, однако я не уверен, что это правильный подход к решению этой проблемы.