Валидация CA TLS/SSL сертификата

Я получил сертификат от Let's Encrypt. У меня есть домен-chain.pem, домент-chain-only.pem, домен-crt.pem, домен-key.pem. Как я понял key.pem - закрытый ключ, crt.pem - открытый. У меня вопрос как мне будь я браузером проверить что мой crt.pem принадлежит реально мне, я прочитал что браузер имеет набор root сертификатов и с их помощью проверяет, как?


Ответы (1 шт):

Автор решения: Pak Uula

Ваш сертификат подписан приватным ключом удостоверяющего центра "Let's Encrypt Authority X3". Сертификат этого удостоверяющего центра хранится в браузере (или в операционной системе, в случае Windows и MacOS). Браузер проверяет, что

  1. цифровая подпись соответствует публичному ключу сертификата "Let's Encrypt Authority X3"
  2. текущее время укладывается в допустимый диапазон для сертификата, т.е. между отсечками времени в полях not-valid-before, not-valid-after
  3. Назначение сертификата - удостоверение сайта (Значение TLS_WEB_SERVER_AUTHENTICATION в поле Extended Key Usage)
  4. доменное имя сервера соответствует значению в полях Subject Name или Alternative Subject Name
  5. Браузер может также обратиться к удостоверяющему центру с запросом, не отозван ли сертификат сервера.

Кроме того, в ходе 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
→ Ссылка