Генерация открытого ключа - PullRequest
1 голос
/ 31 марта 2012

Я прошу прощения за смешивание понятий, но мои знания о ассиметричной безопасности веб-службы невелики.

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

При вызове веб-службы клиентов в ответ я получаю сообщение об ошибке:

«Подпись или расшифровка недействительна».

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

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

Если честно, это именно то, что я сделал с помощью оператора keytool.Результат, файл с расширением .cer.Является ли файл с .cer открытым ключом или как?

Любой совет приветствуется.

Решено:

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

Во всяком случае, я предоставил г-ну Заказчику этот недавно сгенерированный открытый ключ и попросил их установить его наих сервер.Это сработало, мы сопоставили открытые ключи.Я использовал следующую команду keytool для восстановления открытого ключа:

keytool -export -alias [имя закрытого ключа в хранилище ключей] -file [путь к выходу] -keystore [путь к .jks хранилище ключей]

1 Ответ

0 голосов
/ 31 марта 2012

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

Не помешает проверить это, подписав некоторые произвольные данные закрытым ключом и, конечно же, подтвердив их открытым ключом из сертификата. Signature.initVerify() должен даже взять сертификат напрямую. В противном случае вы также можете сравнить (хэш над) модуль открытого и закрытого ключей.

...