sexta-feira, 29 de julho de 2011

Como habilitar https ssl no tomcat com certificado e chave privada já existentes





Possuo o seguinte cenário:

Comprei 1 certificado + 1 chave privada da ICP Brasil. Preciso adiciona-los ao tomcat para que meus sites contidos nele trabalhem com ssl (https). Como fazer?

== Criando keystore ==
Para ativar o ssl no tomcat, antes deve ser criado o chamado "keystore", que é um arquivo criptografado onde o tomcat guarda todos os certificados de forma segura. Para cria-lo e manipula-lo o comando "keytool" deve ser usado. Ao importar um certificado pela primeira vez, o keystore é criado.

#importando certificados raiz da ICPBrasil
# esses certificados foram baixados de http://acraiz.icpbrasil.gov.br/ICP-Brasil.crt
keytool -import -trustcacerts -alias icpbrasil1 -file /etc/tomcat6/certificados/icpbrasil1.pem -keystore /usr/share/tomcat6/.keystore #quando executado pela primeira vez, cria o keystore

keytool -import -trustcacerts -alias icpbrasil2 -file /etc/tomcat6/certificados/icpbrasil2.pem -keystore /usr/share/tomcat6/.keystore #adicionando certificado em keystore ja existente

keytool -import -trustcacerts -alias icpbrasil3 -file /etc/tomcat6/certificados/icpbrasil3.pem -keystore /usr/share/tomcat6/.keystore #adicionando certificado em keystore ja existente

== Convertendo certificado + chave privada para formato DER ==
Para adicionar o certificado + chave privada que comprei, é necessário converte-los para o formato DER.
#convertendo certificado e chave do formato pem para der
openssl pkcs8 -topk8 -nocrypt -in chave.pem -inform PEM -out chave.der -outform DER #convertendo chave pem para der
openssl pkcs8 -topk8 -nocrypt -in certificado.pem -inform PEM -out certificado.der -outform DER # convertendo certificado pem para der

== Adicionando a dupla certificado + chave privada ao keystore ==
Infelizmente o tomcat possui uma "gambiarra" para adicionar a chave privada ao keystore: é necessário utilizar uma classe chamada ImportKey para importar a dupla para o tomcat. Para baixar, compilar e usar a classe, siga os comandos abaixo:

wget http://www.startux.de/images/phocadownload/importkey.java

mv importkey.java ImportKey.java #o nome do arquivo tem que ser igual ao nome da classe

javac ImportKey.java #compilando

java ImportKey chave.der certificado.der ALIAS_QUALQUER /usr/share/tomcat6/.keystore SENHA_DO_KEYSTORE #java ImportKey keyfile certfile [alias] [keystore] [keystore_passphrase]


== Configurando server.xml ==
Em "/etc/tomcat6/server.xml" adicione as seguintes linhas para habilitar o uso do keystore e do HTTPs:
maxThreads="1024" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystorePass="SENHA_DO_KEYSTORE" />

Reinicie o tomcat
/etc/init.d/tomcat6 restart

Nenhum comentário: