Структура запроса на сертификацию PKCS # 10 ( RFC 2986 ), в общих чертах, описана:
Request:
Info:
Version
Name
PublicKey
Attributes
SignatureAlgorithmIdentifier
Signature
Атрибуты - это атрибуты для запроса, где один, если они могут быть атрибутами, которые вы запрашиваете для полученного сертификата.
ЦС может уважать столько или мало от CSR, как он выбирает. Например, StartSSL только считывает информацию с открытым ключом и отбрасывает оставшуюся часть CSR - все остальное, что им было нужно, основано на вашем запросе из веб-интерфейса и состоянии вашей учетной записи.
В целом ЦС не собирается игнорировать значение открытого ключа, потому что, если они заявят вам новую пару ключей, им нужно будет выяснить, как вы должны были получить закрытый ключ. Таким образом, часть открытого ключа должна присутствовать и быть правильной. Команда OpenSSL может получить значение открытого ключа, прочитав закрытый ключ, а затем встроить его в CSR.
Вторая причина, по которой вам нужен закрытый ключ, - это подписать запрос. Я утверждаю, что основная причина, по которой запрос подписан, заключается в том, чтобы принудительно / настоятельно рекомендовать вам сохранить закрытый ключ на этом этапе, чтобы вы не вернулись через несколько минут с «пожалуйста, отмените этот новый сертификат, я уже потерял закрытый ключ У RFC (также) есть это, чтобы сказать:
Примечание 2 - Подпись на запросе на сертификацию предотвращает
организация запрашивает сертификат с открытым ключом другой стороны.
Такая атака даст сущности незначительную способность притворяться
быть отправителем любого сообщения, подписанного другой стороной. это
атака значима только в том случае, если объект не знает сообщения
будучи подписанным, а подписанная часть сообщения не идентифицирует
подписавшего. Сущность все еще не сможет расшифровать сообщения
конечно, для другой стороны.