SSL-сертификат, сгенерированный Firebase Hosting, не включает подключенный домен

У нас была эта проблема дважды за последнюю неделю. Для проекта Firebase Hosting с двумя подключенными доменами один домен не включен в сертификат.

При попытке установить соединение с браузером возвращается код состояния 503, и Chrome показывает net::ERR_CERT_COMMON_NAME_INVALID в консоли. curl возвращается

(51) SSL: нет альтернативного имени субъекта сертификата, совпадающего с именем целевого хоста '{хост}'

(где {host} это имя хоста / подключенный домен)

Чтобы проверить сертификат напрямую, то есть SAN, я использую следующую команду:

gnutls-cli --print-cert ${host} < /dev/null \
    | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
    | openssl x509 -noout -text \
    | grep DNS | tr , '\n' | tr -s " "

Это возвращает список из 100 сертификатов, включая имя хоста для рабочего домена, но только записи firebaseapp.com/*.firebaseapp.com по умолчанию для отказавшего домена.

Примечание: я использую gnutls-cli здесь, потому что кажется, что openssl s_client -connect ${host}:443 не включает имя хоста в запрос и всегда загружает сертификат для firebaseapp.com/*.firebaseapp.com

Я уже обратился в службу поддержки Firebase, но их последний ответ (~16 часов назад) был "есть два разных домена, связанных с одним и тем же проектом, но мне нужно подтвердить, поддерживается ли это". Я вполне уверен, что это поддерживается, учитывая, что в ходе анализа проблемы я обнаружил более 400 SAN для тех же двух имен хостов рядом с доменами, находящимися под нашей ответственностью.

Любые предложения о том, как мы можем решить эту проблему? Я уже пытался удалить и повторно добавить пользовательский домен, но это ничего не изменило.

Смена хостинга технически не будет слишком сложной, но наша главная проблема заключается в том, что DNS находится под контролем поставщика услуг нашего клиента, и им трудно что-либо изменить уже в работе.

4 ответа

После некоторой перемотки с поддержкой Firebase они обнаружили, что корневой домен содержит запись CAA, которая не включает letsencrypt.org.

Исправление в нашем конкретном случае заключалось в том, чтобы включить шифрование давайте только для поддоменов. В качестве примера, используя следующие настройки

  • Домен: awesomesite.com
  • Подключенный домен: firebaseapp.awesomesite.com

Мы можем запросить записи, используя dig:

$ dig CAA awesomesite.com +noall +answer && dig CAA firebaseapp.awesomesite.com +noall +answer             

; <<>> (...) <<>> CAA awesomesite.com +noall +answer
;; global options: +cmd
awesomesite.com.        299 IN  CAA 0 iodef "mailto:cert@awesomesite.com"
awesomesite.com.        299 IN  CAA 0 issue "digicert.com"

; <<>> (...) <<>> CAA firebaseapp.awesomesite.com +noall +answer
;; global options: +cmd
firebaseapp.awesomesite.com.    3599    IN  CAA 0 issue "letsencrypt.org"

Как видите, домен firebaseapp.awesomesite.com имеет запись CAA с letsencrypt.org, в то время как awesomesite.com не был тронут.

Теперь все работает нормально, через некоторое время после обновления записей. Нам не пришлось повторно запускать развертывание на хостинге Firebase или удалять / добавлять подключенный домен (то, что я ранее пытался решить проблему).

Альтернативы для устранения проблемы:

  • Удалить записи CAA: удалить запись CAA из корневого домена (или промежуточных доменов).
  • Расширить записи CAA: включить letsencrypt.org в список доменов в записи CAA корневого домена

Хотя в их сертификате можно видеть 400 сетей SAN, это лишь свидетельство того, что у них есть "готовая" технология. Но обратите внимание, что вы, вероятно, попали в финансовую / бизнес стену. У Firebase нет стимула становиться хостингом корпоративного уровня, поэтому вполне естественно, что им не хватает некоторых функций.

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

Для вашего личного домена, если ваши записи DNS содержат записи A или CNAME, которые указывают на других поставщиков, Firebase не может предоставить сертификат SSL.

https://support.google.com/firebase/answer/9137747?hl=en

прочтите, что, возможно, это ваш случай,

https://firebase.google.com/docs/hosting/custom-domain

Дождитесь предоставления сертификата SSL. После подтверждения права собственности на домен мы предоставляем сертификат SSL для вашего домена и развертываем его в нашей глобальной сети CDN в течение 24 часов после того, как вы укажете свои записи DNS A на хостинге Firebase.

Ваш домен будет указан как одно из альтернативных имен субъектов (SAN) в SSL-сертификате FirebaseApp. Вы можете просмотреть этот сертификат с помощью инструментов безопасности браузера. Во время подготовки домена вы можете увидеть недействительный сертификат, в котором отсутствует ваше доменное имя. Это нормальная часть процесса, которая разрешится после того, как сертификат вашего домена станет доступен.

Для пользователей расширенной настройки ваш веб-сайт будет размещаться у вашего предыдущего хостинг-провайдера до тех пор, пока статус настройки на странице хостинга Firebase вашего проекта не изменится на Connected.

Другие вопросы по тегам