2015-11-26 2 views
-1

Извините, ребята, я ищу во всем Интернете для этого, но мне нужен кто-то, кто может мне помочь. Я написал клиент для определенного сервера, и я использую http-клиент Apache для связи с ним. Теперь я поместил TLS через связь, и я хотел бы знать, как поместить мой клиентский сертификат в сообщение в чтобы использовать HTTP. Я не очень уверен в java keystore et similia, поэтому мне нужен кто-то, кто мне помогает.Apache HTTPClient с использованием TLS

+0

Я не знаком с HTTP-клиентом Apache и не склонен производить полное руководство по keytool, но вот шаг: java-программы могут полагаться на доверительный магазин, чтобы хранить сертификаты, которым они должны доверять. В доверительном магазине по умолчанию хранятся сертификаты для известных органов сертификации, которых обычно достаточно для проверки связи SSL. Однако, если ваш сертификат самоподписан, сертификат не будет проверен. Другая возможность заключается в том, что вы не используете доверительный магазин по умолчанию. В обоих случаях вы можете использовать keytool java для управления хранилищами ключей. – Aaron

+0

thank u, я был уверен, что это двойное удостоверение по протоколу, вместо этого это односторонняя связь TLS (только у сервера есть свой собственный сертификат), поэтому я могу найти пример для управления хранилищем ключей и проверки подлинности самоподписанного сервера. – Wh1t3

ответ

0

keytool manual описывает, как манипулировать хранилищами ключей. Вам интересен метод -importcert.

Сначала вы должны узнать, где находится траст доверия, который использует ваш клиент. Он может быть указан в файле -Djavax.net.ssl.trustStore javaopt, или это может быть установка по умолчанию JDK/JRE, местоположение которой <java_home>/jssecacerts или <java_home>/cacerts.

Затем вы должны получить сертификат сервера. Если вы можете попросить администратора сервера предоставить его безопасным образом. В противном случае вы можете обращаться к серверу по-разному, чтобы он предоставлял свой сертификат, тем легче получить доступ к его интерфейсу https в браузере.

На этом этапе вы можете импортировать сертификат в доверительное учреждение. Если вы используете существующий траст доверия, такой как cacerts, сертификат будет добавлен в качестве новой записи или вы можете указать путь, который не соответствует файлу в аргументе -keystore, и в этом случае новая доверенность с вашим сертификатом в качестве его уникальной записи будет созданный в этом месте. Я бы рекомендовал последний, если ваш клиент не свяжется позже с серверами, доверенными CA.

Ваша команда Keytool должна выглядеть примерно так:
keytool -importcert -alias <a name for the cert> -file <cert's path> -keystore <truststore's path> -storepass <the truststore's password>

При создании нового хранилища доверенных в -storepass при условии разблокирует его для последующего использования, а также должны быть определены для вашего клиента с помощью -Djavax.net.ssl.trustStorePassword javaopt. Если вы используете существующую доверенность, вы должны указать свой пароль (я считаю, что cacerts 'changeit).

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