Взаимный TLS с пакетами Spring Boot SSL и RestTemplateJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Взаимный TLS с пакетами Spring Boot SSL и RestTemplate

Сообщение Anonymous »

У меня есть приложение SpringBoot (клиент), которое выполняет вызовы REST к внешней службе (серверу). Связь между клиентом и сервером должна быть защищена с помощью взаимного TLS. Таким образом, в этом случае нам нужен сертификат клиента в нашем хранилище ключей и сертификат CA для сервера в нашем хранилище доверенных сертификатов.
Когда я импортирую этот материал сертификата в Postman, я могу успешно отправлять запросы. Это означает: сертификаты действительны.
Тем не менее, мне пока не удалось заставить его работать в SpringBoot. Я хотел бы воспользоваться преимуществами SslBundles, представленными в SpringBoot 3.1.
Я определил пакет как с хранилищем ключей, так и с хранилищем доверенных сертификатов:

Код: Выделить всё

spring:
ssl:
bundle:
jks:
mySslBundle:
keystore:
location: "classpath:path/to/clientCert.p12"
password: "PW"
type: "PKCS12"
truststore:
location: "classpath:path/to/serverCA.p12"
password: "PW"
type: "PKCS12"
тогда я смогу привязать этот пакет к RestTemplate:

Код: Выделить всё

@Configuration
public class RestTemplateConfig {

@Bean(name = "fooRestTemplate")
public RestTemplate createFooRestTemplate(RestTemplateBuilder restTemplateBuilder,
SslBundles sslBundles) {
return restTemplateBuilder
.setSslBundle(sslBundles.getBundle("mySslBundle"))
.build();
}

}
Когда клиент отправляет запрос на сервер в приложении, я получаю следующую ошибку:

Код: Выделить всё

Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
В Postman мне пришлось загрузить сертификат сервера как файл .pem.
В моем приложении SpringBoot я преобразовал файл .pem в .p12 с помощью openssl. Я сделал это для того, чтобы сертификат клиента и сертификат сервера представляли собой файл p12 и могли быть импортированы в один и тот же sslBunde. Правильный ли это подход к импорту хранилища ключей и доверенного источника в одном пакете?
Любая подсказка приветствуется.

Подробнее здесь: https://stackoverflow.com/questions/775 ... sttemplate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»