SSL сертификаты имеют срок действия. Вот я купил (продлил) свой SSL сертификат, заплатил кучу денег. Получил его, выложил на свой сайт, радуюсь. А посещаемость сайта резко упала.
Дело в том, что новый сертификат выпущен уже другим корневым центром сертификации, старые браузеры и смартфоны о нём ничего не знают и вашему сертификату тоже не доверяют.
По-хорошему ваши клиенты должны обновить свои устройства, если это ещё возможно, добавить новый корневой центр сертификации в доверенные и ваш сайт станет у них открываться. Но вам-то от этого не легче. Как владелец веб-сервиса вы не можете заставить посетителей вашего сайта это сделать.
А старый сертификат уже протух, вернуться на него нельзя. Что делать? В некоторых случаях вам помогут кросс-сертификаты.
Про корневые сертификаты
В рамках обычного управления жизненным циклом удостоверяющего центра (CA) корневые сертификаты и CA необходимо время от времени обновлять и продлевать. Использование новых CA на регулярной основе легко для клиентов, поскольку они могут установить новый выпускающий CA вместе с полученным сертификатом TLS, S/MIME или другим сертификатом подписчика. Обычно они выстраиваются в цепочку к одному и тому же корню (якорю доверия), поэтому никаких дополнительных действий не требуется; однако, когда CA выпущен под новым корнем, это может вызвать проблемы с доверием, если не у всех проверяющих сторон этот корень есть в их хранилище доверенных корневых сертификатов.
Что такое кросс-сертификаты?
Кросс-сертификаты (они же сертификаты сцепления или мостовые сертификаты, англ. Cross certificates a.k.a. Chain or Bridge certificate). Кросс-сертификат представляет собой сертификат, в котором субъекты в полях subject и issuer не совпадают, но оба являются удостоверяющими центрами (присутствует расширение BasicConstraints и поле cA установлено в True). Как правило, такие сертификаты используются, когда УЦ изменил некоторые элементы свой политики издания сертифиткатов (новая дата истечения срока действия ключа или новый ключ), либо когда один УЦ был поглощён другим, и сертификаты, изданные поглощённым УЦ, привязываются к новому владельцу, чтобы можно было отказаться от использования ранее выданных корневых сертификатов.
При использовании в данном контексте термин сертификат сцепления указывает на то, что была создана новая привязка, и иногда называется мостовым сертификатом (он привязывается к новому УЦ или выполняет функции моста к нему). Кросс-сертификаты могут быть установлены на сервере (как часть связки сертификатов - смотрите примечание в разделе Протокол TLS, сообщение Certificate), но при использовании для обеспечения обратной совместимости, например, при обработке EV-сертификата несовместимым с EV клиентом, кросс-сертификат устанавливается на клиенте. За исключением того, что поле cA установлено в True (что, откровенно говоря, мало что меняет) кросс-сертификат представляет собой обыкновенный промежуточный сертификат.
Вот сертификат корневого центра сертификации: GlobalSign Root R46 (НОВЫЙ корневой):

А вот кросс-сертификат GlobalSign Root R46, выпущенный старым корневым центром сертификации GlobalSign Root CA - R1 (СТАРЫЙ корневой).

И оба они выполняют одну и ту же функцию, только кросс-сертификат меняет корневой сертификат, удлиняя цепочку.
Как изменить корневой сертификат с помощью кросс-сертификата?
Обычно цепочка сертификатов выглядит так:
Ваш сертификат → Сертификат промежуточного центра сертификации → Сертификат корневого центра сертификации
Внутри PEM сертификата будет:
-----BEGIN CERTIFICATE-----
СЕРТИФИКАТ
-----END CERTIFICATE-----Или полный вариант:
-----BEGIN CERTIFICATE-----
СЕРТИФИКАТ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
СЕРТИФИКАТ ПРОМЕЖУТОЧНОГО ЦС
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
СЕРТИФИКАТ КОРНЕВОГО ЦС (НОВЫЙ)
-----END CERTIFICATE-----Как применить кросс-сертификат на веб-сервере?
Просто сформируйте сертификат по принципу:
-----BEGIN CERTIFICATE-----
СЕРТИФИКАТ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
СЕРТИФИКАТ ПРОМЕЖУТОЧНОГО ЦС
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
КРОСС-СЕРТИФИКАТ
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
СЕРТИФИКАТ КОРНЕВОГО ЦС (СТАРЫЙ)
-----END CERTIFICATE-----Проверить что внутри файла можно с помощью openssl:
openssl crl2pkcs7 -nocrl -certfile "certificate.crt" | openssl pkcs7 -print_certs -text -nooutКросс-сертификаты позволяют избежать проблем с доверием
Ссылки
Кросс-сертификаты GlobalSign:
https://support.globalsign.com/ca-certificates/globalsign-cross-certificates
