Во время разработки клиента веб-сервиса Java я столкнулся с проблемой.Аутентификация для веб-службы использует сертификат клиента, имя пользователя и пароль.Клиентский сертификат, полученный от компании за веб-сервисом, имеет формат .cer
.Когда я проверяю файл в текстовом редакторе, он имеет следующее содержимое:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Я могу импортировать этот файл в качестве сертификата в Internet Explorer (без необходимости ввода пароля!) И использовать его для аутентификациис веб-сервисом.
Мне удалось импортировать этот сертификат в хранилище ключей, предварительно обрезав первую и последнюю строки, преобразовав их в символы новой строки unix и выполнив base64-декодирование.Полученный файл можно импортировать в хранилище ключей (с помощью команды keytool
).Когда я перечисляю записи в хранилище ключей, эта запись имеет тип trustedCertEntry
.Из-за этого типа записи (?) Я не могу использовать этот сертификат для аутентификации в веб-сервисе.Я начинаю думать, что предоставленный сертификат является общедоступным сертификатом, который используется для проверки подлинности ...
Обходное решение, которое я нашел, заключается в том, чтобы импортировать сертификат в IE и экспортировать его как .pfx
файл.,Этот файл может быть загружен как хранилище ключей и может использоваться для аутентификации с помощью веб-службы.Однако я не могу ожидать, что мои клиенты будут выполнять эти шаги каждый раз, когда они получают новый сертификат.Поэтому я хотел бы загрузить файл .cer
непосредственно в Java.Есть какие-нибудь мысли?
Дополнительная информация: компания, стоящая за веб-службой, сказала мне, что сертификат следует запрашивать (используя IE и веб-сайт) с ПК и пользователя, который позже импортирует сертификат.