При настройке SSL и сертификатов на моем сервере Apache у меня возникли проблемы с доменами второго уровня, такими как .com.pt.
Если я попрошу сертификат на www.xpto.com
домен будет выдан www.xpto.com
и xpto.com
.
Если я прошу сертификат на www.xpto.com.pt
это будет работать только для www.xpto.com.pt
но не для xpto.com.pt
(выдается RapidSSL)
Есть ли для этого техническая причина?
Да. Для непосвященных давайте разберем это на маленькие кусочки:
Когда вы запрашиваете стандартный сертификат x509 с расширением проверки подлинности сервера (обычно называемый сертификатом SSL), вы должны указать имя субъекта (SN). Этот SN должен соответствовать тому, что вводит пользователь, чтобы сертификат можно было использовать без предупреждения.
Технически сертификат должен подходить только для того номера SN, который вы предоставляете CA. Итак, если вы запросите www.example.com
тогда это должно только работать для этого доменного имени, оно не должно работать для example.com
или что-нибудь Кроме www.example.com
.
Однако многие веб-сайты также работают с альтернативными доменными именами. Доменное имя по умолчанию работает очень часто. Итак, в примере www.example.com
; www
это имя хоста, и example.com
это доменное имя. Сертификат был запрошен и выдан www.example.com
, и, как установлено в предыдущем абзаце, это не соответствует example.com
(так как example.com
запрашивает запись хоста (A) по умолчанию для домена example.com
; должно быть очень очевидно, что хост www
и хост по умолчанию не совпадают в смысле DNS и, конечно, даже не обязательно должны быть одним и тем же сайтом).
Большинство людей фактически имеют один и тот же веб-сайт на обоих именах хостов. Кроме того, большинство пользователей ожидают, что они могут ввести любое имя, и появится правильный веб-сайт. Из-за этого большинство центров сертификации не выдают запрошенный вами сертификат.. Они фактически выдают сертификат с предоставленным вами SN (как указано выше), который также содержит альтернативное имя субъекта (SAN; которое, как следует из названия, предоставляет альтернативные имена, которые пользователь может ввести и которые следует принять без предупреждающего сообщения) . Обычно это работает, только когда вы запрашиваете доменное имя 2-го уровня (например, example.com
) и они очень часто игнорируют www
как доменное имя 3-го уровня (например, www.example.com
становится example.com
для целей сертификата).
Обычно, когда вы запрашиваете сертификат для example.com
или www.example.com
вы фактически получаете сертификат с серийным номером example.com
и SAN www.example.com
. TLD обычно может быть любым.
Но когда вы запрашиваете сертификат с более конкретным именем, например, в вашем примере (из Вопроса), где есть 4 уровня (или более) доменного имени, они не включают это альтернативное имя.
Вы можете отдельно запросить его. Иногда, просто попросив их, они выдадут его без дополнительной оплаты. В других случаях вам нужно запросить сертификат UCC или нескольких SAN (то же самое, разные имена). Сертификат с подстановочными знаками также будет работать, хотя они, как правило, дороже и обычно требуют более высокой степени аутентификации покупателя.