Валидация CA TLS/SSL сертификата
Я получил сертификат от Let's Encrypt. У меня есть домен-chain.pem, домент-chain-only.pem, домен-crt.pem, домен-key.pem. Как я понял key.pem - закрытый ключ, crt.pem - открытый. У меня вопрос как мне будь я браузером проверить что мой crt.pem принадлежит реально мне, я прочитал что браузер имеет набор root сертификатов и с их помощью проверяет, как?
Ответы (1 шт):
Ваш сертификат подписан приватным ключом удостоверяющего центра "Let's Encrypt Authority X3". Сертификат этого удостоверяющего центра хранится в браузере (или в операционной системе, в случае Windows и MacOS). Браузер проверяет, что
- цифровая подпись соответствует публичному ключу сертификата "Let's Encrypt Authority X3"
- текущее время укладывается в допустимый диапазон для сертификата, т.е. между отсечками времени в полях not-valid-before, not-valid-after
- Назначение сертификата - удостоверение сайта (Значение TLS_WEB_SERVER_AUTHENTICATION в поле Extended Key Usage)
- доменное имя сервера соответствует значению в полях Subject Name или Alternative Subject Name
- Браузер может также обратиться к удостоверяющему центру с запросом, не отозван ли сертификат сервера.
Кроме того, в ходе TLS Handshake браузер просит, чтобы сервер подписал случайную строку своим приватным ключом, и проверяет эту цифровую подпись публичным ключом из сертификата сервера. Это необходимо для доказательства владения приватным ключом, соответствующим сертификату.
Как проверить сертификат самому
Команда openssl verify проверяет базовые свойства сертификата (1 и 2 в предыдущем списке)
Вам нужны оба сертификата проекта Let's Encrypt: корневой isrgrootx1.pem и промежуточный Certificate Authority X3 letsencryptauthorityx3.pem
Команда для проверки:
sudo openssl verify -CAfile isrgrootx1.pem -untrusted letsencryptauthorityx3.pem домен-crt.pem