Я пытаюсь ударить по удаленному серверу через вызов веб-службы get/post через SSL. Я использую апач HttpClient следующим образом:Как обойти веб-сервис по https, дающий ответ SSLHandshaking?
HttpClient client = new HttpClient();
client.getHostConfiguration().setProxy("my_host", 443);
Credentials defaultcreds = new UsernamePasswordCredentials("dev", "password");
client.getState().setCredentials(new AuthScope("my_host", 443, AuthScope.ANY_REALM), defaultcreds);
// Create a method instance.
GetMethod method = new GetMethod(url);
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
try {
// Execute the method.
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody();
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " + e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
method.releaseConnection();
}
Это похоже на работу в ПЛАКАТЕ, но я знаю, что сертификаты находятся в браузере, и обрабатывает все аутентификации и сертификат обработку. Мне нужно написать код, чтобы этот ответ использовался в другом месте. Есть идеи? И будет ли это проблемой, когда код будет перенесен на сервер? (Будет ли нужен другой сертификат).
EDIT: вот дополнительная ошибка.
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Какое конкретное исключение SSLHandshakeException происходит? Отправьте стопку, пожалуйста. Кроме того, какой сертификат является хостом, с которым вы подключаетесь? Подписывается ли он крупным ЦС или подписывается ЦС? – Syon
CA по своему выбору. Он не был добавлен в хранилище ключей, но я попытался обойти сертификат, поскольку он будет использоваться для целей тестирования. – worm