Using HTTPS in Wildfly with LetsEncrypt


HTTPS for all

Todos já sabemos que hoje em dia não existe mais desculpa para seu site trafegar dados como plain/text, isso porquê existe o letsencrypt:


https://letsencrypt.org/


Se você utiliza UBUNTU e APACHE como servidor web, colocar seu site para rodar com HTTPS é tão simples quanto isso:

Install

Since Certbot is packaged for your system, all you'll need to do is apt-get the following packages.
$ sudo apt-get install python-letsencrypt-apache 

Get Started

Certbot has a fairly solid beta-quality Apache plugin, which is supported on many platforms, and automates both obtaining and installing certs:
$ letsencrypt --apache
If you're feeling more conservative and would like to make the changes to your Apache configuration by hand, you can use the certonly subcommand:
$ letsencrypt --apache certonly


Isso é ótimo pois além de garantir um site seguro, e seu usuário vai agradecer por isso, você ganha outras features do https, como HTTP 2.0 .

Porém para quem utiliza o JBoss/Wildfly com backend em Java, a coisa é um pouco mais complicada, bem mais complicada pra falar a verdade, mas sim, é possível, vamos ao passo-a-passo para implementação de https no wildfly 10.

1 - Gerar o certificado com o certbot conforme as instruções do site https://letsencrypt.org/

2 - Gerar o arquivo com senha

A private key, gerada pelo letsencrypt não tem senha, porém o wildfly necessita de uma private key com senha, para isso precisamos copiar os arquivos gerados pelo letsencrype para o diretório de configuração do JBOSS, desta forma mantemos o backup lá no diretório original, e alteramos apenas as cópias.

Normalmente estes arquivos são gerados em:

/etc/letsencrypt/live/MEUDOMINIO

Então eu os copio para o diretório de configuração do wildfly:

cp /etc/letsencrypt/live/MEUDOMINIO/*.pem /WILDFLY_HOME/standalone/configuration/

Agora que os arquivos .pem gerados pelo letsencrypt estão no diretório de configuração, você pode trabalhá-los com mais segurança.

2.1 - Gerando uma versão da private key com senha:
> openssl rsa -aes192 -in privkey.pem -out keypass.pem 

Este comando vai solicitar uma senha para o novo arquivo criado.

Este comando vai gerar o arquivo keypass.pem

> openssl pkcs12 -export -in cert.pem -inkey keypass.pem -out yourdomain.com.p12 -name default -CAfile your_provider_bundle.crt -caname root

Este comando vai gerar o arquivo yourdomain.com.p12

keytool -importkeystore -deststorepass senha -destkeypass senha -destkeystore yourdomain.com.jks -srckeystore yourdomain.com.p12 -srcstoretype PKCS12 -srcstorepass senha -alias default

Este comando irá gerar o arquivo yourdomain.com.jks, dentro da sessão security-realms:

Agora é só incluir o arquivo jks, dentro do arquivo WILDFLY_HOME/standalone/configuration/standalone.xml 


SslRealm">

     
               
                   
                       yourdomain.com
.jks" relative-to="jboss.server.config.dir" keystore-password="senha "/>                     
                   
               
           



yourdomain.com.jks" relative-to="jboss.server.config.dir" keystore-password="senha" />





Também é necessário incluir um listener para o protocolo https, assim como já existe para o protocolo http:

-- Este já existe no standalone.xml

SslRealm" />--Este deve ser criado

Ainda no arquivo standalone.xml, é necessário incluir os socket bindings para as portas, 443 e 8443 conforme abaixo:



Depois disso, inicialize o servidor, acessando seu site pelo protocolo https.






Links úteis:
http://reallifejava.com/configuring-ssl-in-wildfly-8/
https://community.letsencrypt.org/t/how-could-i-get-the-password-for-keyfile/4703/2
https://docs.jboss.org/author/display/WFLY10/Undertow+subsystem+configuration
https://docs.jboss.org/jbossweb/7.0.x/ssl-howto.html
https://blogs.oracle.com/blogbypuneeth/entry/steps_to_create_a_jks

Comentários

Postagens mais visitadas