Сертификат проверки Java связан с ключом - PullRequest
3 голосов
/ 19 июля 2011

У меня есть сертификат и PrivateKey, которые я получил из разных мест.Учитывая только эти два абстрактных объекта, могу ли я проверить, что сертификат связан с сертификатом для данного PrivateKey или является сертификатом?

Я так понимаю, если это ключи RSA, я могу привести их к RsaPublicKey / RsaPrivateKeyубедитесь, что экспонента и модуль совпадают, но что, если они ECDSA?А как насчет других типов?

В конечном итоге я хочу сохранить ключ в хранилище ключей с сертификатом в качестве цепочки сертификатов, и я ожидал, что это вызовет исключение или вызовет какую-то ошибку, если я попытался загрузить ключ ссертификат от другого ключа.Но это не имеет значения?

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Прежде всего, чтобы быть уверенным, вы можете подписать случайный блок данных своим закрытым ключом и проверить его с помощью открытого ключа.Открытый ключ является частью сертификата.Он работает для всех алгоритмов подписи.

Также очень часто структура закрытого ключа содержит соответствующий открытый ключ.Вы должны это проверить - тогда поиск подходящего ключа будет легче.

0 голосов
/ 19 июля 2011

У вас не должно быть закрытого ключа. Это личное. Все, что вам нужно, это их открытый ключ, а затем вы проверяете сертификат с помощью Certificate.verify (ключ PublicKey).

Кто бы ни дал вам закрытый ключ, он просто СОВЕРШЕННО Скомпрометировал свою безопасность. Им необходимо создать новый закрытый ключ, подписанный сертификат и т. Д., Развернуть его и прекратить любое использование предыдущего ключа. Им также необходимо сохранить новый закрытый ключ в секрете.

...