Проблема с сертификатом SSL в прокси веб-службы - PullRequest
2 голосов
/ 27 июня 2011

Я создаю клиент веб-службы JAVA, в котором я подключаюсь к службе.

Эта служба имеет проверку SSL-сертификата.

Как вызвать эту службу с помощью проверки SSL-сертификата.

Я использую реализацию JAX-RPC в клиенте, построенном с использованием Eclipse.

Пример будет оценен.

Ответы [ 3 ]

1 голос
/ 28 июня 2011

Я могу установить соединение с веб-службой ...

Я добавил хранилище ключей с помощью команды:

keytool -import -trustcacerts -file <file path/filename.cer> -alias <aliasName> -keystore <JAVA_HOME/jre/lib/security/cacerts> 

дал пароль как "changeit" и добавил сертификатв хранилище ключей.

Теперь в коде я добавил две строки:

System.setProperty("javax.net.ssl.trustStore", "<JAVA_HOME>/jre/lib/security/cacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

также добавил

_call.setUsername("username");
_call.setPassword("password"); 

где _call - объект вызова класса вызова.

И это сработало !!!!!!

0 голосов
/ 27 июня 2011

Вы имеете в виду, что ваш веб-сервис защищен "клиентским сертификатом"? Если да, получите сертификат в формате .p12 (PFX) или хранилище ключей у поставщика услуг и используйте следующие системные свойства, чтобы установить его перед вашим вызовом:

javax.net.ssl.keyStore - Путь к хранилищу ключей на вашем сервере

javax.net.ssl.keyStorePassword - кодовая фраза для этого хранилища ключей

javax.net.ssl.keyStoreType - Установите его в «pkcs12», если вам предоставлен сертификат клиента .p12

Если ваше приложение является клиентом только для одного поставщика веб-служб, задайте эти свойства в качестве аргументов виртуальной машины, в противном случае вам может потребоваться создать конкретную SSLConnectionFactory для каждой защищенной конечной точки. Обратитесь к моему ответу на эту запись для получения подробной информации о создании пользовательских фабрик сокетов SSL.

0 голосов
/ 27 июня 2011

Все, что вам нужно сделать, это внедрить корневой сертификат сервера в вашу среду JDK / JRE с помощью следующей командной строки: -

keytool -importcerts -trustcacerts -file <path_to_root_cer_file> -alias <the_server_alias> -keystore <your_keystore>

Значение по умолчанию [your_keystore] равно

 1. <JDK_HOME>/jre/lib/security/cacerts
 2. <JRE_HOME>/lib/security/cacerts

Пароль по умолчанию - changeit .

Когда вы звоните в веб-сервис, просто упомяните

"https://<host>:<SSL_port>/Path/To/Services"

Надеюсь, это поможет вам выполнить ваши требования.

С уважением,

Чарли Ч.

...