SOAP-связь через HTTPS

У меня есть небольшое приложение, написанное на Java, которое взаимодействует с сервером с использованием SOAP и через HTTPS. У меня есть jks сервера, но когда я пытаюсь добавить его в склад доверенных сертификатов и сделать запрос, я получаю сообщение об ошибке:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCe rtPathBuilderException: unable to find valid certification path to requested target

Мой код:

public WStest() {

    this.testTrustStore = getClass().getClassLoader().getResourceAsStream("Keys/serverkeystore.jks");
    this.testPasswd = "server-p@ssword";

}

public HttpsUrlConnectionMessageSender httpComponentsMessageSender() throws Exception {
    KeyStore ts = KeyStore.getInstance("JKS");
    ts.load( testTrustStore, testPasswd.toCharArray());

    try {
        testTrustStore.close();
    } catch ( IOException ex) {}

    TrustManagerFactory trustManagerFactory         = TrustManagerFactory.getInstance(
                TrustManagerFactory.getDefaultAlgorithm()
    );
    trustManagerFactory.init(ts);
    HttpsUrlConnectionMessageSender messageSender   = new HttpsUrlConnectionMessageSender();

  messageSender.setTrustManagers(trustManagerFactory.getTrustManagers());
    messageSender.setHostnameVerifier((hostname, sslSession) -> {
        if (hostname.equals("localhost")) {
            return true;
        }
        return false;
    });

    return messageSender;

}

private WebServiceTemplate makeTemplate() throws Exception {

    WebServiceTemplate localTemplate = new WebServiceTemplate();
    Jaxb2Marshaller marshaller = makeMarshaller();

    localTemplate.setMarshaller(marshaller);
    localTemplate.setUnmarshaller(marshaller);

    localTemplate.setMessageSender(httpComponentsMessageSender());

    return localTemplate;

}

Я не знаю, должен ли сервер иметь мой сертификат в своем TrustStore или что еще может быть не так. Мне нужна помощь для этого, я пытался сделать это несколькими способами, это тот, который лучше всего соответствует моим потребностям, но не работает. Заранее спасибо!

0 ответов

Другие вопросы по тегам