Аутентификация сертификата клиента Spring RestTemplate с использованием файла .crt или .pem - PullRequest
0 голосов
/ 23 апреля 2020

Я приобрел сертификат SSL у GoDaddy для своего домена, и когда я скачал сертификат с GoDaddy, я получил следующие файлы.

certificate files

У меня есть отправил файл 68668e2ed363d948.pem на сторонний сервер во время регистрации для доступа к API. Теперь мне нужно отправить тот же сертификат при выполнении вызовов API для проверки подлинности.

Я пробовал следующие решения, но всегда получаю ошибку 401 Unauthorized от API.

Решение 1

SSLContext sslContext = SSLContextBuilder
                    .create()
                    .loadTrustMaterial(ResourceUtils.getFile("classpath:68668e2ed363d948.pem"))
                    .build();

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

HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
            requestFactory.setHttpClient(client);

RestTemplate restTemplate = new RestTemplate(requestFactory);

Решение 2 Я выполнил приведенную ниже команду на сервере, чтобы он автоматически использовал сертификат для выполнения вызовов REST API.

keytool -import -keystore $JAVA_HOME/jre/lib/security/cacerts -file 68668e2ed363d948.cer -alias clientcert

Существуют и другие решения в какой JKS файл необходим. Поэтому я попытался преобразовать файл .crt в .jks, но для этого необходим файл .key, которого у меня нет.

Пожалуйста, укажите, как я могу использовать файл .crt или .pem выполнить аутентификацию клиента с помощью шаблона REST.

Спасибо!

...