Configurando Undertow com Https(ssl) com Spring Boot

Neste artigo irei apresentar a configuração do Https, utilizando o Spring Boot com o servidor de aplicação undertow.

Configurando application.yml ou application.properties

Acesse seu arquivo de configuração application.yml do spring boot e insira o código abaixo

server:
  port: 8443
  http:
    port: 8080
  ssl:
    enabled: true
    key-store: caminho_completo_do_certificado/bootsecurity.p12
    key-store-password: senha
    keyStoreType: PKCS12
    keyAlias: apelido

Criando bean de configuração

Agora vamos criar um bean para configurar o redirecionamento automático da porta 8080 para 8443 conforme configurado no application.yml. 

Você pode inserir o código abaixo em uma classe de configuração ( @Configuration) separada ou pode inserir diretamente na sua classe de inicialização do spring boot.

  @Value("${server.http.port}")
    private int httpPort;

    @Value("${server.port}")
    private int httpsPort;

    @Bean
    public ServletWebServerFactory undertowWebServerFactory() {
        UndertowServletWebServerFactory undertowServletWebServerFactory = new UndertowServletWebServerFactory();
        undertowServletWebServerFactory.addBuilderCustomizers(builder -> {
            builder.addHttpListener(httpPort, "0.0.0.0");
        });
        undertowServletWebServerFactory.addDeploymentInfoCustomizers(deploymentInfo -> {
            SecurityConstraint securityConstraint = new SecurityConstraint();
            securityConstraint.addWebResourceCollection(new WebResourceCollection().addUrlPattern("/*"));
            securityConstraint.setTransportGuaranteeType(TransportGuaranteeType.CONFIDENTIAL);
            securityConstraint.setEmptyRoleSemantic(SecurityInfo.EmptyRoleSemantic.PERMIT);
            deploymentInfo.addSecurityConstraint(securityConstraint).setConfidentialPortManager(exchange -> httpsPort);
        });
        return undertowServletWebServerFactory;
    }

Dúvidas?

Você tem outras dúvidas? Deixe seu feedback nos comentários abaixo. Bom, espero que essa dica tenha sido útil.