Как Apache выбирает, какой сертификат использовать?

В настоящее время Apache размещает несколько поддоменов с сертификатами хоста, созданными с помощью certbot и запроса http.

Теперь я хочу настроить виртуальный ssl-хост по умолчанию для перенаправления несуществующих поддоменов на основной. Для этого я сгенерирую подстановочный сертификат с вызовом DNS.

Поскольку в настоящее время я не могу автоматизировать обновление с помощью запроса DNS, я хочу использовать групповой сертификат только для хоста ssl по умолчанию в Apache.

Мой вопрос: когда происходит первое согласование между Apache и браузером, будет ли Apache сначала искать сертификат в конфигурации, соответствующей запрошенному хосту, или Apache будет каждый раз обслуживать групповой сертификат, настроенный на хосте ssl по умолчанию ?

1
задан 5 January 2021 в 15:06
2 ответа

Документация Apache содержит подробный раздел о том, какой VirtualHost выбран для запроса. Цитата из раздела «Как сервер выбирает правильный виртуальный хост на основе имени»:

Важно понимать, что первым шагом в разрешении виртуального хоста на основе имени является разрешение на основе IP. Разрешение виртуального хоста на основе имени выбирает только наиболее подходящий виртуальный хост на основе имени после сужения числа кандидатов до наилучшего соответствия на основе IP. Использование подстановочного знака (*) для IP-адреса во всех директивах VirtualHost делает это сопоставление на основе IP несущественным.

При поступлении запроса сервер найдет наиболее подходящий (наиболее точный) аргумент на основе IP-адреса и порта, используемых запросом. Если существует более одного виртуального хоста, содержащего эту наиболее подходящую комбинацию адреса и порта, Apache далее сравнивает директивы ServerName и ServerAlias ​​с именем сервера, указанным в запросе.

Если вы опустите директиву ServerName для любого виртуального хоста на основе имени, сервер по умолчанию будет использовать полное доменное имя (FQDN), полученное из имени хоста системы. Это неявно установленное имя сервера может привести к нелогичному сопоставлению виртуальных хостов и не рекомендуется.

Вы должны создать выделенный VirtualHost по умолчанию. Каждый запрос к хосту, не указанному явно в другом блоке VirtualHost, будет направлен туда, поэтому вы можете выбрать, какой сертификат вы хотите использовать там.

1
ответ дан 24 April 2021 в 00:39

Apache позволяет указать директиву SSLCertificateFile на уровне виртуального хоста. См. SSLCertificateFile , в котором говорится: «Контекст: конфигурация сервера, виртуальный хост». Таким образом, какой бы виртуальный хост он ни использовал для ответа на запрос - будь то виртуальный хост по умолчанию или другой - он будет использовать сертификат, настроенный вами с помощью SSLCertificateFile на этом виртуальном хосте.

Надеюсь, это ответ на ваш вопрос?

1
ответ дан 24 April 2021 в 00:39

Теги

Похожие вопросы