Взаимная ошибка SSL на Wildfly 13 с самозаверяющими сертификатами - PullRequest
0 голосов
/ 02 ноября 2018

Я внедряю взаимную аутентификацию ssl в Wildfly 13, где я развернул серверное и клиентское приложение, взаимодействующее с использованием SOAP.
В хранилище ключей сервера (настроенного на уровне Wildfly) у меня есть самозаверяющий сертификат (сервер-сертификат) и пара ключей.
В праве сервера у меня есть самозаверяющий сертификат клиента (client-cert).
В хранилище ключей клиента я поместил самозаверяющий сертификат клиента (client-cert) и соответствующую пару ключей.
В доверенное хранилище клиента я положил сервер-сертификат.

ПРИМЕЧАНИЕ. Клиентское и серверное приложения развернуты в одном экземпляре Wildfly.
ПРИМЕЧАНИЕ: я заметил, что есть два сообщения ClientHello, что означает два процесса рукопожатия, когда я звоню в службу, и я не знаю почему.

Я получаю следующий вывод журнала: enter image description here

ПРИМЕЧАНИЕ: Я могу вызвать сервер, используя ту же пару ключей клиента и сертификат через Soap-ui.

Вот как я реализовал создание клиента SSLContext:

            TrustManagerFactory tmFactory = TrustManagerFactory
                    .getInstance(TrustManagerFactory.getDefaultAlgorithm());
            KeyStore ts = KeyStore.getInstance("JKS");
            ts.load(new FileInputStream(
                    System.getProperty("jboss.server.config.dir") + "/starfish_client.truststore"),
                    "password".toCharArray());
            tmFactory.init(ts);

            KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            KeyStore ks = KeyStore.getInstance("JKS");
            ks.load(new FileInputStream(
                    System.getProperty("jboss.server.config.dir") + "/starfish_client.keystore"),
                    "password".toCharArray());
            kmf.init(ks, "password".toCharArray());

            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(kmf.getKeyManagers(), tmFactory.getTrustManagers(), null);

            prov.getRequestContext().put(JAXWS_SSL_SOCKET_FACTORY_PROPERTY, sslContext);

Может ли быть проблема в том, что я использую самозаверяющие сертификаты или из-за развертывания обоих приложений на одном компьютере?

...