Как предоставить пользовательский SSLContext серверу Netty при весенней загрузке

Как мы можем настроить собственный SSLContext для весеннего загрузочного приложения с сервером Netty?

В исходном коде я вижу «reactor.ipc.netty.http.server.HttpServerOptions», которые представляют собой некоторые параметры запуска сервера, но я не могу найти способ их настроить.

Есть ли какой-нибудь обработчик, через который мы можем внедрить наш собственный SSLContext?

Я ищу что-то похожее на это (Spring 5 WebClient с использованием ssl), где WebClient настроен с пользовательским SSLContext через «reactor.ipc.netty.http.client.HttpClientOptions».


person Sreenivas    schedule 11.09.2018    source источник


Ответы (1)


Netty можно настроить как пример удара в spring-boot 2.

  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
  import org.springframework.boot.web.server.ErrorPage;
  import org.springframework.boot.web.server.Ssl;
  import org.springframework.boot.web.server.WebServerFactoryCustomizer;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.context.annotation.ImportResource;

  /**
   * author : Mohammad Ghoreishi
   */
  @Configuration
  @ImportResource({"classpath:convert-iban-service.xml", "classpath:config-loader-context.xml", "classpath*:error-resolver.xml"})
  @EnableAutoConfiguration
  public class Application {

    public static void main(String[] args) throws Exception {
      SpringApplication.run(Application.class, args);
    }

    @Bean
    public WebServerFactoryCustomizer<NettyReactiveWebServerFactory> customizer(){
      return new WebServerFactoryCustomizer<NettyReactiveWebServerFactory>() {
        @Override
        public void customize(NettyReactiveWebServerFactory factory) {
          Ssl ssl = new Ssl();
          // Your SSL Cusomizations
          ssl.setEnabled(true);
          ssl.setKeyStore("/path/to/keystore/keystore.jks");
          ssl.setKeyAlias("alias");
          ssl.setKeyPassword("password");
          factory.setSsl(ssl);
          factory.addErrorPages(new ErrorPage("/errorPage"));
        }
      };
    }
  }
person MohammadGhoreishi    schedule 06.10.2018