Glassfish - Importar um certificado válido e existente
Autor: Gabriel Prestes | Publicado: 2016-06-21T15:43:00-03:00





 Quando você precisar migrar um ambiente ou uma aplicação para o Glassfish, você encontrará algumas adversidades. São elas: 



Migrar os certificados de um Oracle Wallet(p12) para um Java Keystore/Truststore; (imaginando que o ambiente legado é um OHS (Oracle HTTP Server));


Importar certificado de outro ApplicationServer com o keystore já configurado.




 Não incluo aqui a criação de um novo certificado SSL, certificado auto assinado, ou renovações, pois a “privatekey” pode ser recriada sem problemas. Já a publicação se aplica quando a chave privada não pode ser recriada por alguma razão, seja pelo uso de um outro sistema ou impacto de negócio. &nbsp;&nbsp;&nbsp;




Privatekey: Chave privada usada no sistema de criptografia baseado em chaves. &nbsp;





 Mas qual o grande problema? Bem, o Glassfish suporta apenas um keystore e um truststore que vem previamente setado para uso do alias ‘s1as’. Quando configurado o ‘http-listener-2’, atendendo a porta 28181, este certificado não é reconhecido como válido, pois é para fins administrativos. Portanto, é necessário substituí-lo, o que é mais comum, ou incluir um novo alias no keystore localizado no diretório ‘config’ do domain. 


IMPORTANTE: Sete a variável $JAVA_HOME para o mesmo JDK do oracle_commons dentro do $MIDDLEWARE_HOME. Os comandos abaixo incluem o JDK/bin no PATH, então não precisei passar o PATH completo do orakpi e keytool.



Migrar os certificados de um Oracle Wallet(p12) para um Java Keystore:






orapki wallet pkcs12_to_jks -wallet ewallet.p12 -pwd coloque_a_senha_do_wallet_aqui -jksKeyStoreLoc keystore.jks-conv -jksKeyStorepwd changeit -jksTrustStoreLoc cacerts.jks-conv -jksTrustStorepwd changeit






Importar certificado de outro ApplicationServer com o keystore já configurado; 




Como mencionado, o Glassfish suporta apenas um keystore. Logo precisará fazer o merge do keystore e do truststore: 

 




keytool -v -importkeystore -srckeystore cacerts.jks-conv -srcstoretype JKS -destkeystore cacerts.jks -deststoretype JKS


keytool -v -importkeystore -srckeystore keystore.jks-conv -srcstoretype JKS -destkeystore keystore.jks -deststoretype JKS





Neste ponto precisará saber as senhas de todos os JKSs, pois serão solicitadas as senhas dos keystores de origem e destino. Caso as mesmas não estejam, utilize o comando abaixo para ajustá-las:




keytool -keypasswd -new changeit -keystore keystore.jks -storepass "senha do keystore" -alias orakey1 -keypass "senha antiga" 





 Possíveis problemas durante o processo serão relacionados ao keystore de origem ser 32 bits e o de destino 64 bits.Então sugiro manter como o de destino o que atenda o hardware de seu ambiente de Glassfish, assim como a senha do certificado alias que deseja utilizar tem que ser igual. Logo, utilize todas as senhas iguais a senha do master-password do Glassfish. 


Não esqueça de após o merge dos keystore alterar o alias do certificado SSL do ‘http-listener-2’ para o alias desejado. Para visualizar o alias utilize o comando abaixo: &nbsp;

 



keytool -list -v -keystore keystore.jks





 Referências:



https://en.wikipedia.org/wiki/Public-key_cryptography

https://docs.oracle.com/cd/E19798-01/821-1751/6nmnci6aa/index.html

http://www.webfarmr.eu/2010/04/import-pkcs12-private-keys-into-jks-keystores-using-java-keytool/

https://www.sslshopper.com/article-most-common-java-keytool-keystore-commands.html
Publicação também disponível em: http://ilegra.com/beyonddata/