Хотя я знаком с 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 и взаимную аутентификацию, или это неправильная настройка на стороне сервера.
Может ли кто-нибудь предлагать предложения или указывать на ресурсы, которые могут помочь мне понять это, пожалуйста?