Objetivo
Este documento tem por objeto demonstrar as configurações necessárias para habilitar o certificado SSL (https) em projetos utilizando Spring Boot e também Keylock, a partir de um arquivo de certificado auto-assinado. Como exemplo será utilizado o projeto do TOTVS Agro LGPD.
O Certificado SSL
O certificado SSL (Secure Sockets Layer) é um certificado digital utilizado para autenticar a identidade de um site, possibilitando a utilização de uma conexão criptografada entre um servidor Web e um navegador, mantendo a privacidade e a segurança das informações.
Converter certificado para o formato p12 (pkcs12)
Para a configuração do certificado SSL em projetos JAVA, o formato padrão recomendado a partir do Java 9 é o pkcs12. Caso possua um certificado JKS, é possível convertê-lo para o formato pkcs12 através do seguinte comando:
keytool -importkeystore -srckeystore seu_certificado.jks -destkeystore seu_certificado.p12 -deststoretype pkcs12
Configurando SSL no projeto Spring Boot
Em posse do arquivo do certificado, copie-o para o diretório raiz do projeto para seguirmos com a etapa de configuração do SSL. A seguir serão apresentados os parâmetros necessários para a configuração do certificado em projetos utilizando Spring Boot via arquivo application.yml e também via passagem de argumentos para a JVM.
Configuração via .yml
server: ssl: key-store: classpath:seu_certificado.p12 key-store-password: password key-store-type: pkcs12 key-alias: springboot key-password: password port: 8443
Argumentos para JVM
-Dserver.ssl.keystore=classpath:seu_certificado.p12 -Dserver.ssl.keystore-password=password -Dserver.ssl.keystore-type=pkcs12 -Dserver.ssl.key-alias=springboot -Dserver.ssl.key-password=password -Dserver.port=8443
Abaixo segue o detalhamento dos parâmetros..
- server.port: Porta na qual o servidor estará escutando
- server.ssl.keystore: Caminho para o armazenamento de chaves que contém o certificado SSL
- server.ssl.keystore-password: Senha para acessar o armazenamento de chaves
- server.ssl.keystore-type: Tipo do certificado.
- server.ssl.key-alias: Apelido que identifica a chave no armazenamento de chaves
- server.ssl.key-password: senha usada para acessar a chave no armazenamento de chaves.
Configurando SSL no Keycloak
A seguir serão apresentados os parâmetros necessários para a configuração do certificado SSL para a ferramenta Keycloak, via arquivo application.yml e também via passagem de argumentos para a JVM.
Configuração via .yml
keycloak: auth-server-url: https://SEU_DNS:8443/auth ssl-required: all confidential-port: 8443
Argumentos para JVM
-Dkeycloak.auth-server-url=https://SEU_DNS:8443/auth -Dkeycloak.ssl-required=all -Dkeycloak.confidential-port=8443
URIs de Redirecionamento
Neste passo iremos configurar as URIs de Redirecionamento do Keycloak, para o protocolo HTTPS, para tanto, basta acessar o Administration Console da ferramenta Keycloak, através do seguinte endereço: endereço da máquina + nova porta + /auth, exemplo: https://192.168.0.1:8443/auth
Após acessar a tela inicial, clicar Administration Console, e realizar o login com usuário administrador. Em seguida, acessar o menu “Clients”, e selecionar a opção “Lgpd-api”.
Nesta tela devemos atualizar as informações relacionadas às URIs de Redirecionamento, com base nos valores informados na configuração do SSL no keycloak.