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