Я не могу понять, как сертификат осведомлен о связи с закрытым ключом. Например, под окнами, когда вы нажимаете на сертификат, который приходит со смарт-карты, он говорит: «У вас есть закрытый ключ, соответствующий этому сертификату». Как сертификат знает об этом? Я читал RFC5280, однако я не вижу поля в сертификате X509, который указывает, подключен ли сертификат к закрытому ключу или нет. Что мне не хватает?Как узнать сертификат x509 о привязке к закрытому ключу?
ответ
В общем, любой открытый ключ содержится в его закрытом ключе. Независимо от операционной системы, механизма хранения или библиотеки, учитывая только сертификат X.509 и закрытый ключ, значение открытого ключа можно извлечь из закрытого ключа и сравнить с значениями открытого ключа в сертификате. Если они совпадают, частный ключ принадлежит сертификату.
Например, закрытый ключ RSA состоит из
- PublicExponent
- Modulus
- Prime1
- Prime2
- Exponent1 [опционально]
- Exponent2 [опционально]
- Коэффициент [опционально]
- PrivateExponent [опционально]
Первые два, PublicExponent и Modulus составляют открытый ключ и сохраняются в сертификате X.509. (Вышеуказанные необязательные поля могут быть рассчитаны с первых 4, но обычно включаются в закрытый ключ, так как для их вычисления требуется много мощности ЦП)
Для вашего конкретного примера оснастка сертификата MMC запрашивает Crypto API (CAPI) для установленных сертификатов. CAPI использует модули Cryptographic Service Provider (CSP), которые могут обеспечить, помимо прочего, хранилища сертификатов. В рамках спецификации хранилища сертификатов CSP хранилище предоставляет атрибут «PP_Container» для каждого сохраненного сертификата. Этот атрибут сообщает CAPI имя контейнера CSP, который содержит соответствующий закрытый ключ (если есть). Это «разделение» позволяет хранить секретный ключ на смарт-карте или аппаратном модуле безопасности, а сертификат хранится в самой системе Windows.
Это зависит от операционной системы и/или крипто библиотеки. В случае Windows сертификат хранится в хранилище сертификатов. Хранилище сертификатов поддерживает свойства, привязанные к хранилищу, в которых может предоставляться информация о CSP и ключевом контейнере. Когда вы открываете сертификат в хранилище, MMC читает вложенные свойства сертификата и определяет, есть ли связанный закрытый ключ.
- 1. Сертификат отладки WPF не может получить доступ к закрытому ключу
- 2. Как узнать, подписан ли сертификат x509 RSA?
- 3. Предоставление доступа Node.js к сертификату/закрытому ключу
- 4. Доступ к закрытому ключу SSL с сервлета
- 5. Как узнать, какой X509 сертификат, подписанный другой сертификат (Java)
- 6. Где хранить сертификат X509 для службы Windows?
- 7. Как импортировать сертификат pfx и установить права доступа к закрытому ключу для всех пользователей
- 8. X509Certificate2 Доступ к закрытому ключу в токен безопасности
- 9. C# сертификат x509 декодер
- 10. Отменить клиентский сертификат X509
- 11. x509 сертификат Информация
- 12. Как добавить пароль к существующему закрытому ключу в Java
- 13. Получить сертификат x509 в службе облачного облака
- 14. Как конвертировать `X509 *` сертификат на `STACK_OF (X509_NAME)`
- 15. Доступ к закрытому ключу аппаратного токена в Java
- 16. Предупреждение о привязке к сборке
- 17. Как открыть сертификат X509 в java?
- 18. Преобразование PKCS10CertificationRequest в сертификат X509
- 19. x509 Весенний клиент, плохой сертификат
- 20. Добавление данных в сертификат X509
- 21. Открытый сертификат и разрешения X509
- 22. x509: сертификат, подписанный неизвестным органом
- 23. Создать сертификат X509 из байта []?
- 24. Невозможно импортировать сертификат X509 v3
- 25. Как вернуть сертификат x509 в Джерси ws
- 26. Android, Быстрый вопрос о привязке к сервису
- 27. OpenSSL :: X509 :: Сертификат, выдающий сертификат на неправильный домен
- 28. Как вы создаете сертификат x509, основанный исключительно на открытом ключе в формате RSA?
- 29. Как проверить, хорошо ли сформирован сертификат x509?
- 30. Как установить сертификат x509 в клиенте WCF?
Очень хорошее объяснение, спасибо! –