Перейти к основному содержанию

Кросс-сертификаты в помощь

SSL сертификат

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 (НОВЫЙ корневой):

ssl

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

ssl

И оба они выполняют одну и ту же функцию, только кросс-сертификат меняет корневой сертификат, удлиняя цепочку.

Как изменить корневой сертификат с помощью кросс-сертификата?

Обычно цепочка сертификатов выглядит так:

Ваш сертификат → Сертификат промежуточного центра сертификации → Сертификат корневого центра сертификации

Внутри 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

Теги

 

Похожие материалы

Windows 10 — генерация DKIM ключей с помощью подсистемы Linux

Воспользуемся подсистемой Linux и сгенерируем DKIM ключи в ОС Windows 10. DomainKeys Identified Mail (DKIM) — метод e-mail аутентификации, разработанный для обнаружения подделывания сообщений, пересылаемых по email. Метод дает возможность получателю проверить, что письмо действительно было отправлено с заявленного домена.