Проблема, связанная с сертификатом SSL при вызове остальных служб - PullRequest
0 голосов
/ 15 сентября 2018

От клиента (например: https://localhost:8080/) мы передаем значения, связанные с сертификатом, и вызываем остальные службы (размещенные на другом порту - https://localhost:446/serviceName).

Проблема возникает, когдамы пытаемся передать сертификат, SSL-квитирование происходит правильно (без ошибок при отладке), но значение сертификата не передается службе, размещенной на другом порту. Значение сертификата доступно в коде сервера с помощью ссылки (X509Certificate) httpReq.getAttribute("javax.servlet.request.X509Certificate");

Примечание. Мы используем загрузочное приложение Spring, которое намеренно запускается на сервере Tomcat. И необходимые сертификаты CA, хранилище ключей и хранилище доверенных сертификатов присутствуют в пути к ресурсам в обоих проектах(клиент и служба размещены). В файле конфигурации проекта службы покоя для параметра client-auth установлено значение false.

Пример фрагмента кода, используемого для вызова службы покоя:

SSLContext sslContext = SSLContexts.custom() .loadTrustMaterial (restserviceTruststore) .loadKeyMaterial (restserviceKeyStore,пароль) .build ();

        HttpClient client = HttpClients.custom()                    .setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)
                .setSslcontext(sslContext).build();

        RestTemplate restTemplate = new RestTemplate();

        restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(client));
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_XML);

        HttpEntity<String> request = new HttpEntity<>(XML, headers);
    response = restTemplate.postForObject(endpointURL, request, String.class);

Вопрос:

1) От клиента, какое хранилище ключей и права доступа нам нужно передать SSLContext?Это хранилище ключей / доверенных сертификатов сервера или клиенты?

2) Какие именно шаги необходимо предпринять для решения этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...