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