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