mar 19

Adicionando um certificado e uma chave em um keystore para configurar HTTPS no JBOSS

Estava eu tentando configurar o ssl no JBOSS 7.1 Community para utilizar meu certificado obtido no StartSSL e me deparei com o seguinte problema : 2 Arquivos um com extensão .crt e outro com extensão .key . Quando você olha os tutoriais de como configurar o ssl no jboss todos vão ensinar a criar um certificado fake e colocar no keystore, mas o que eu precisava era adicionar uma certificado de verdade.

Depois de algum tempo procurando eu encontrei a solução, são necessários 2 passos que é a transformação dos 2 arquivos .crt e .key em um arquivo do tipo pkcs12 que tem a extensão .p12 , e em seguida você deve importar esse certificado criado para um keystore java qualquer que você tenha.

Você precisará de 2 ferramentas: o OpenSSL , nativo no linux e para windows você acha aqui  e o Keytool do próprio java , basta ter alguma versão do java instalado para usá-lo, aqui tem uma referência legal dos principais comandos.

Agora vamos aos comandos necessários

Comando 1:

openssl pkcs12 -export -name [nome-do-certificado] -in [certificado.crt]  -inkey [chave-certificado.key]  -out keystore
.p12

Comando 2:

 keytool  -importkeystore -destkeystore [keystore-java-criado.jks]-srck
eystore keystore.p12 -srcstoretype pkcs12 -alias [alias-desejado]

E pronto, agora você poderá configurar um connector do jboss para utilizar ssl, utilizando seu certificado digital e poder utilizar https em suas aplicações.

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false"> 

  <connector name="https" scheme="https" protocol="HTTP/1.1" socket-binding="https" enable-lookups="false" secure="true">

    <ssl name="foo-ssl" password="secret" protocol="TLSv1" key-alias="[alias-desejado]" certificate-key-file="[keystore-java-criado]" />

  </connector>

</subsystem>

E é isso!

 

ago 01

Estados de um objeto gerenciado por um EntityManager

Neste post falarei um pouco de como a especificação JPA 2 trata as entidades manipuladas pelos EntityManagers. As principais funções dos EntityManagers são:

  1. Como o próprio nome já diz, gerenciar as entidades;
  2. Sincronizar o estado dos objetos com os dados correspondentes no banco de dados

Ao falarmos em gerenciar uma entidade nos referimos a como um EntityManager manipula uma entidade, e para isso é necessário entender os estados possíveis que uma instância pode assumir para um EntityManager. São 4 estados possíveis:

  • Transient

Neste estado seu objeto acabou de ser criado e o atributo que foi anotado com @Id não possui valor . Toda vez que você dá um new em um objeto de uma Entidade este é o estado que ele se encontrará.

  • Managed

Neste estado o objeto possui valor no atributo anotado com @Id, sendo este valor atribuido pelo EntityManager e não setado manualmente. Toda vez que ocorrer uma sincronização através de um flush ou um commit, os dados do objeto são atualizados no os dados do banco de dados.

  • Removed

Neste estado,assim como no estado managed, o objeto possui valor no atributo anotado com @Id, sendo este valor atribuido pelo EntityManager e não setado manualmente. Porém quando ocorrer uma sincronização através de um flush ou um commit, o objeto passa a não ter mais vínculo com o banco de dados.

  • Detached

Neste estado,assim como no estado managed, o objeto possui valor no atributo anotado com @Id, sendo este valor atribuido pelo EntityManager ou setado manualmente. Porém este objeto não possui mais vínculo com o EntityManager, logo ele não será mais sincronizado com o banco de dados, e qualquer alteração realizada com ele residirá somente na memória da aplicação e não no banco de dados.

Para trocar de estados o EntityManager nos fornece os seguinte métodos:

  • persist : Transient -> Managed
  • merge : Transient -> Managed / Detached -> Managed
  • evict, clear ou close : Managed -> Detached
  • remove : Managed -> Removed

 

Tendo esses estados em mente e também como transitar entre eles, você consegue ter um controle muito melhor sobre o que você está fazendo ao utilizar JPA.

Fica a dica!

 

 

jun 20

Voltando com o blog

Bom, tive alguns problemas com o wordpress, e demorei a parar pra ver o que aconteceu, com isso o blog ficou fora por alguns dias, e devido a esse problema perdi muito conteúdo como fotos e alguns plugins, espero em breve conseguir recuperar o conteúdo perdido e conseguir postar mais frequentemente.