Почему закрытый ключ используется при создании CSR? - PullRequest
0 голосов
/ 04 июня 2019

CSR в основном создается для создания сертификата с доверенным открытым ключом.

Перед созданием CSR,

создаем закрытый ключ

openssl genrsa -out key.pem 1024

, а затем используйте этот закрытый ключ (key.pem) для создания запроса CSR (req.pem).

openssl req -new -key key.pem -out req.pem

Edit:

Я вижу, что механизм докера установлен с корневым сертификатом, сертификатом сервера и личным сертификатом, используемым с CSR

enter image description here

Какова точная цель предоставления закрытого ключа (key.pem в качестве ввода) при отправке CSR? Поскольку сертификат должен быть подписан с помощью закрытого ключа родителя

Требуется ли закрытый ключ (key.pem) для создания соответствующего открытого ключа во время создания CSR?

или

Используется ли закрытый ключ (key.pem) для шифрования CSR, а полученная подпись добавляется в CSR?

1 Ответ

2 голосов
/ 05 июня 2019

Структура запроса на сертификацию PKCS # 10 ( RFC 2986 ), в общих чертах, описана:

Request:
    Info:
        Version
        Name
        PublicKey
        Attributes
    SignatureAlgorithmIdentifier
    Signature

Атрибуты - это атрибуты для запроса, где один, если они могут быть атрибутами, которые вы запрашиваете для полученного сертификата.

ЦС может уважать столько или мало от CSR, как он выбирает. Например, StartSSL только считывает информацию с открытым ключом и отбрасывает оставшуюся часть CSR - все остальное, что им было нужно, основано на вашем запросе из веб-интерфейса и состоянии вашей учетной записи.

В целом ЦС не собирается игнорировать значение открытого ключа, потому что, если они заявят вам новую пару ключей, им нужно будет выяснить, как вы должны были получить закрытый ключ. Таким образом, часть открытого ключа должна присутствовать и быть правильной. Команда OpenSSL может получить значение открытого ключа, прочитав закрытый ключ, а затем встроить его в CSR.

Вторая причина, по которой вам нужен закрытый ключ, - это подписать запрос. Я утверждаю, что основная причина, по которой запрос подписан, заключается в том, чтобы принудительно / настоятельно рекомендовать вам сохранить закрытый ключ на этом этапе, чтобы вы не вернулись через несколько минут с «пожалуйста, отмените этот новый сертификат, я уже потерял закрытый ключ У RFC (также) есть это, чтобы сказать:

Примечание 2 - Подпись на запросе на сертификацию предотвращает организация запрашивает сертификат с открытым ключом другой стороны. Такая атака даст сущности незначительную способность притворяться быть отправителем любого сообщения, подписанного другой стороной. это атака значима только в том случае, если объект не знает сообщения будучи подписанным, а подписанная часть сообщения не идентифицирует подписавшего. Сущность все еще не сможет расшифровать сообщения конечно, для другой стороны.

...