Прошу прощения за смешение понятий, но мои познания в области безопасности асимметричных веб-сервисов невелики.
Правильно, у меня есть хранилище ключей Java, содержащее мой закрытый ключ и открытый ключ клиента.
При вызове веб-службы клиентов я получаю в ответ сообщение об ошибке:
«Подпись или расшифровка недействительны».
Мы выяснили, что открытый ключ, который у меня есть в хранилище ключей и который высылается по запросу, отличается от открытого ключа, который клиент имеет на своем сервере. Каким-то образом я дал клиенту другой открытый ключ, отличный от того, который у меня есть в хранилище ключей.
Что я хотел бы сделать, так это восстановить открытый ключ на основе моего закрытого ключа в хранилище ключей и снова отправить его г-ну Заказчику. Возможно ли это сделать?
Честно говоря, именно это я и сделал с помощью оператора keytool. В результате файл с расширением .cer. Является ли файл с .cer открытым ключом или как?
Любые советы приветствуются.
Решено:
Выше я сказал, что пытался восстановить открытый ключ из хранилища ключей, но я не был уверен, что это правильный способ сделать это.
Как бы то ни было, я предоставил г-ну Заказчику этот недавно сгенерированный открытый ключ и попросил его установить его на своем сервере. Это сработало, мы сопоставили открытые ключи. Я использовал следующую команду keytool для восстановления открытого ключа:
keytool -export -alias [имя закрытого ключа в хранилище ключей] -file [путь к выходным данным] -keystore [путь к хранилищу ключей .jks]