Отправка клиентских сертификатов на пользовательский ClosableHttpClient для zuul - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь отправить клиентский сертификат X.509 с исходящими запросами для zuul forwardproxy. Сертификат включен в хранилище ключей, которое я загружаю с помощью loadKeyMaterial() в SSLContext.

Вот код:

    @Bean
    public CloseableHttpClient httpClient() throws Throwable {
        SSLContext sslcontext = SSLContexts.custom()
                .loadKeyMaterial(new File(keyStorePath), keyStorePass, keyStorePass, new PrivateKeyStrategy() {
                    @Override
                    public String chooseAlias(Map<String, PrivateKeyDetails> aliases, Socket socket) {
                        return alias;
                    }
                })
                .loadTrustMaterial(new File(keyStorePath), keyStorePass, new TrustSelfSignedStrategy())
                .build();

        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
                sslcontext,
                new String[] { "TLSv1.3" },
                new String[] { "TLS_DHE_RSAWITH_AES_256_GCM_SHA384" },
                SSLConnectionSocketFactory.getDefaultHostnameVerifier());

        return HttpClients.custom().setSSLSocketFactory(sslsf)
           .build();
    }

когда я делаю тестовый запрос, я получаю Received fatal alert: handshake_failure и в подробных журналах я вижу сообщение No X.509 certificate for client authentication, use empty Certificate message instead. Как я могу заставить httpClient отправлять сертификат как сертификат клиента X.509?

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