2010-05-05 2 views
1

Хотя я знаком с HTTPS и концепцией SSL, я недавно начал разработку и нашел, что немного запутался.Использование HttpClient с SSL и сертификатами

Требование состояло в том, что я пишу небольшое приложение Java, которое выполняется на машине, прикрепленной к сканеру. Когда документ сканируется, это подбирается, и файл (обычно PDF) отправляется через Интернет на наш сервер приложений, который затем обрабатывает его. Я написал приложение, используя библиотеки Apache Commons и HTTPClient.

Второе требование заключалось в подключении через SSL, требующем сертификата. Следуя инструкциям на странице HTTPclient, я использую AuthSSLProtocolSocketFactory со страницы вкладок.

Конструктор может использовать хранилище ключей, пароль к хранилищу ключей, доверительный магазин и пароль доверия. В качестве начального теста наш DBA включил SSL на одном из наших веб-серверов разработки и предоставил мне файл .p12, который, когда я импортировал в IE, позволяет мне успешно подключиться.

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

keytool error: java.lang.Exception: Input not an X.509 certificate 

Я последовал предложение импортировать p12 в Internet Explorer и экспортировать как .cer, который я могу затем успешно импортировать в хранилище ключей. Когда я поставить это в качестве хранилища ключей аргумента AuthSSLProtocolSocketFactory я получаю бессмысленное errror, но если я попробовать его в качестве доверенных сертификатов кажется, что читает это хорошо, но в конечном итоге я получаю

Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate 

Я уверен, если я пропустил некоторые шаги, я неправильно понимаю SSL и взаимную аутентификацию, или это неправильная настройка на стороне сервера.

Может ли кто-нибудь предлагать предложения или указывать на ресурсы, которые могут помочь мне понять это, пожалуйста?

ответ

3

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

Вот некоторые ссылки, которые могут быть полезны:

java.lang.Exception: Input not an X.509 certificate

Import private key and certificate into Java Key Store

Configuring Keystores and Truststores

1

убедитесь, что файл сертификата не имеет ничего до и после них.

----- BEGIN CERTIFICATE -----

----- END CERTIFICATE -----

Смежные вопросы