Uma palavra de cautela: Um certificado SSL tem dois objetivos: criptografar dados, e garantir procedência. Apenas o primeiro item é coberto por este tutorial, pois aqui você vai ver como criar um certificado auto-assinado. Se você sabe o que isto significa, e conhece bem os riscos que isto pode ocasionar, vá em frente. A configuração a seguir é um ótimo campo-de-testes. Mas se não sabe, procure estudar mais um pouco, e entender bem os riscos. Depois, volte aqui e aproveite.
Passo 1: decida por qual URL você vai acessar o seu servidor
Este passo é importante, pois este endereço vai ser gravado no certificado, e se você acessar o servidor por outro endereço, o navegador irá reclamar. Caso esteja fazendo apenas um teste em seu próprio computador, localhost é o suficiente.
Passo 2: crie um certificado auto-assinado
Como vimos acima, é um risco de segurança usar certificados auto-assinados. Mas para ambientes de teste e desenvolvimento, eles são mais do que suficientes. O local do arquivo vai depender de qual profile do JBoss você usa. No caso, vamos exemplificar com o 'default' mesmo.
- Vá até o diretório de configuração do profile
cd /opt/jboss-4.2.3.GA/server/default/conf
- Crie o arquivo keystore.jks usando a ferramenta keytool:
keytool -genkey -alias jboss -validity 1825 -keyalg RSA -keystore keystore.jks
Uma breve explicação do que estamos fazendo:
* -alias jboss: apelido que damos a este certificado, dentro do keystore.
* -validity 1825: número de dias em que este certificado será válido. Neste caso, 5 anos.
Ao digitar este comando, o keytool vai começar a perguntar um punhado de informações, que serão usadas para compor o certificado. Vamos mostrar aqui como ficariam estas informações, para o setor de TI da Example Corporation:
Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: localhost What is the name of your organizational unit? [Unknown]: Setor de TI What is the name of your organization? [Unknown]: Example Corporation What is the name of your City or Locality? [Unknown]: Porto Alegre What is the name of your State or Province? [Unknown]: Rio Grande do Sul What is the two-letter country code for this unit? [Unknown]: BR Is CN=localhost, OU=Setor de TI, O=Example Corporation, L=Porto Alegre, ST=Rio Grande do Sul, C=BR correct? [no]: Enter key password for(RETURN if same as keystore password): Re-enter new password:
Alguns itens aqui são de extrema importância:
* keystore password: deve ser uma senha de pelo menos seis caracteres. Use a mesma senha, tanto no início quanto no final da lista acima.
* first and last name: Apesar de parecer que ele quer o seu nome e sobrenome, digite ali a URL do servidor, escolhida no passo 1
Ao terminar, o arquivo keystore.jks deve estar criado.
Passo 3: Edite o arquivo de configuração
Quem serve os JSPs e servlets no JBoss é o Tomcat. Vá até o diretório de configuração dele, e edite o arquivo server.xml:
vi /opt/jboss-4.2.3.GA/server/default/deploy/jboss-web.deployer/server.xml
Neste arquivo, você verá uma seção chamada Connectors. Entre os diversos Connectors, vai haver um, comentado, que aponta para a porta 8443. Deixe-o comentado. Abaixo dele, use a seguinte configuração:
port="8443" address="${jboss.bind.address}" scheme="https" secure="true" clientAuth="false" keystoreFile="/opt/jboss-4.2.3.GA/server/default/conf/keystore.jks" keystorePass="umasenha" sslProtocol="TLS" keyAlias="jboss"/>
Alguns itens importantes:
* port="8443": a porta a ser usada. Normalmente a porta para https é a 443. Mas esta porta só pode ser usada por processos iniciados com o usuário root em sistemas unix/linux.
* keystorePass="umasenha": digite aqui a senha escolhida por você durante a geração do arquivo keystore.jks.
Salve e feche o arquivo. A princípio, isto basta. Vá adiante.
Passo 4: Reinicie e teste
Após baixar e levantar o JBoss, acesse o servidor pela URL escolhida, na porta 8443. No exemplo acima:
https://localhost:8443
E é só.