Как настроить приложение Spring Boot для приема неизвестного сертификата клиента SSL? - PullRequest
0 голосов
/ 13 июля 2020

Я создал приложение Spring Boot 2 с двусторонней аутентификацией SSL.
Короче говоря, это сводится к следующей конфигурации:

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().authenticated()
                .and().x509();
    }

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

Однако я хотел бы связаться с уровень приложения, даже если сертификат не принят, и ответит HTTP-ответом от приложения.

Есть ли способ добиться этого?

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Если подтверждение сертификата на стороне сервера не требуется, это означает, что вам не нужно SSL. Таким образом, деактивируйте его в своем файле конфигурации:

server:
  ssl:
     enabled: false

PS: Раскрытие вашего REST веб-сервиса только в протоколе HTTP опасно. Возможно, имеет смысл иметь такую ​​конфигурацию в вашей среде разработки.

0 голосов
/ 16 июля 2020

Отвечая на свой вопрос: я мог бы использовать свойство Spring Boot

server.ssl.client-auth: want

вместо

server.ssl.client-auth: need

Первый вариант по-прежнему позволяет подключаться к tomcat, даже если сертификат не действителен или отсутствует. Тогда запрос будет отклонен фильтрами безопасности.

...