Использование httpClient с SSL и сертификатами
-
03-10-2019 - |
Вопрос
Пока я был знаком с HTTPS и концепцией SSL, я недавно начал некоторое развитие и обнаружил, что я немного запутался.
Требование было то, что я пишу небольшое приложение Java, которое работает на машине, прикрепленной к сканеру. Когда документ отсканирован, это подбирается и файл (обычно PDF) отправлен через Интернет на наш сервер приложений, который затем обработает его. Я написал приложение, используя библиотеки Apache Commons и httpClient.
Второе требование было подключение по SSL, требуя сертификата. Следующее руководство на странице httpClient i использую authsslprotocolsocketFactory с страницы вклада.
Конструктор может принять клавиш-магазин, пароль ключевого магазина, Truststore и Truststore Password. В качестве первоначального теста наш DBA включил SSL на одном из наших веб-серверов разработки и предоставил мне файл .p12, который когда я импортирует в IE, позволяет мне успешно подключаться.
Я немного запутанный между Keystores и TrustStores и на каких шагах мне нужно взять с помощью keytool. Я попробовал импортировать P12 в файл клавишных магазинов, но получите ошибку:
keytool error: java.lang.Exception: Input not an X.509 certificate
Я последовал к предположению о том, чтобы импортировать P12 в Internet Explorer и экспортирую в качестве .Cer, который я могу успешно импортировать в ключ. Когда я предоставляю это в качестве аргументального аргумента authsslprotocorsocketOvactory authsSLProtocolsocketFactory, я получаю бессмысленное ошибочное ошибочное, но если я попробую его как Truststore, похоже, что это читает, но в конечном итоге я получаю
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
Я не уверен, если бы я пропустил несколько шагов, я неправильно понимающую SSL и взаимную аутентификацию в целом или это неправильно конфигурация на стороне сервера.
Может ли кто-нибудь предоставить предложения или указать мне на ресурсы, которые могут помочь мне понять это, пожалуйста?
Решение
Клей-знак содержит ваши частные ключи и связанные с ними сертификаты. Truststore проводит сертификаты, которые вы доверяете, и поэтому можно использовать для строительства и проверки пути сертификата.
Вот некоторые ссылки, которые могут быть полезны:
java.lang.exception: ввод не сертификат X.509
Импортировать закрытый ключ и сертификат в магазин ключей Java
Другие советы
Убедитесь, что ваш файл сертификата не имеет ничего до и после этого.
----- Начните сертификат ------
----- Конец сертификата -----