Como gerar um certificado SSL grátis para sua aplicação em Spring
Construir uma aplicação utilizando o framework Spring pode ser relativamente fácil, porém quando existe a necessidade de implantar a sua aplicação em uma VPS, por exemplo, pode se tornar uma tarefa árdua e muitas vezes extremamente complexa. Quando se trata de um projeto a nível de produção, geralmente utilizamos um certificado SSL para termos acesso ao HTTPS, e assim trafegarmos os nossos dados com segurança e garantirmos a privacidade dos usuários do sistema. Por muito tempo um certificado custava muito caro e era inacessível para pequenas empresas e pequenas startups.
Porém nasceu uma iniciativa que facilita esse processo, que é a https://letsencrypt.org/, e é com esse projeto da letsencrypt que iremos gerar o certificado da nossa aplicação, confira:
Vamos aprender como configurar nossa aplicação e começar a utilizar o SSL em nossas requisições, vamos partir do princípio que você tenha uma aplicação pronta e queira hospedar em alguma VPS, então segue nossa lista de requisitos mínimos para prosseguir:
- Domínio válido ou sub-domínio
- Acesso root ao servidor
- Um projeto utilizando Spring
- Um pouco de paciência
Domínio ou Subdomínio válido
O DNS do seu domínio ou subdomínio do tipo A devem estar obrigatóriamente apontando para o IP da sua VPS, caso isso não esteja configurado, não será possível gerar um certificado válido.
Acesso root ao servidor
Vamos dividir essa parte em pequenas etapas.
Etapa 1 — Instalando o Certbot
Vamos atualizar os repositórios:
sudo add-apt-repository ppa:certbot/certbot
Em seguida:
sudo apt-get update
E por fim:
sudo apt-get install certbot
Etapa 2 — Executando o Certbot
O Certbot precisa responder a um desafio criptográfico lançado pela API Let’s Encrypt para provar que controlamos nosso domínio.
Ele usa as portas 80 (HTTP) ou 443 (HTTPS) para fazer isso. Certifique-se que seu domínio está apontando para o IP da sua VPS.
Substitua example.com pelo seu domínio
sudo certbot certonly --standalone --preferred-challenges http -d example.com
Ao executar o comando, você será solicitado a inserir um endereço de e-mail e concordar com os termos de serviço.
Depois de fazer isso, você verá uma mensagem informando que o processo foi bem-sucedido e onde seus certificados estão armazenados.
Configurando a aplicação
Parabéns, seu certificado já foi gerado! Agora iremos configurar para que o servidor o encontre em sua aplicação utilizando Spring Boot consiga utilizar o certificado, os certificados foram gerados aqui:
sudo ls /etc/letsencrypt/live/seudominio.com.br
Acessando esse diretório você encontrará:
Output: cert.pem chain.pem fullchain.pem privkey.pem README
Porém o Spring espera que tenhamos uma chave do tipo PKCS12, isso significa que você
deve converter a chave, para isso digite o seguinte comando:
openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root
O arquivo keystore.p12 com PKCS12 será gerado em /etc/letsencrypt/live/seudominio.com.br
Agora em sua aplicação, adicione o arquivo keystore.p12 (ou deixe o caminho onde o arquivo está localizado no servidor)
*Eu particularmente deixo o certificado dentro da pasta resources, então fica basicamente assim:
server.port=443 security.require-ssl=true server.ssl.key-store=classpath:keystore.p12 server.ssl.key-store-password=server.ssl.keyStoreType=PKCS12 server.ssl.keyAlias=tomcat
Pronto, agora é só dar start em sua aplicação que ao chamar sua API ela estará utilizando uma
conexão segura SSL.