Autenticação Mútua no Oracle Weblogic 10.3

Estou utilizando autenticação mútua em um projeto e resolvi postar como fazer isso utilizando o Oracle Weblogic 10.3. Embora seja trabalhoso a configuração é bem simples.

Antes disso, o que é Autenticação mútua?

Autenticação mútua ou autenticação de duas vias é quando o cliente se autentica no servidor e o servidor se autentica com a aplicação cliente. Dessa forma a identidade dos dois se torna confiável. O cliente confia no servidor pois possui ele em sua base de confiança (trust store - servidor) e o servidor confia no cliente pelo mesmo motivo (trust store cliente). A autenticidade e a identidade do cliente e do servidor é feita utilizando certificados.

Nós vamos utilizar aqui o padrão X.509.

Mãos à obra.

Primeiro passo: Configurar o SSL simples:

1. Adicionar o CA de teste no browser (ou outro CA - Verisign, ICP-Brasil, ...).

O CA ou Certificate authority é a entidade autoridade de certificação. Ela é responsavél por dizer quando um certificado é confiável ou não. Ela normalmente emite certificados.

No firefox:
Ferramentas, Opções (ou Editar, Preferências), Avançado, Criptografia, Autoridades, Importar

No IE:
Ferramentas, Opções da Internet, Conteúdo, Certificados, Autoridades de Certificação Raiz Confiáveis, Importar

Para testes: utilizar o CA de teste localizado em:
\wlserver_10.3\server\lib\CertGenCA.der

e selecionar para confiar nesse CA.

CAs

2. Configurar o SSL no server.
No console do Weblogic, selecionar Environment, Servers e o seu server, General, habilitar SSL (SSL Listen Port Enabled), colocar uma porta SSL.

Para testes: selecionar Keystores, utilizar Demo Identity e Demo Trust aplicar as alterações.
Para produção: selecionar Keystores, utilizar Custom Identity e Custom Trust, configurar os dados do identity e do trust

keystores

Restartar o server.

3. Acessar uma página para verificar se o SSL simples está funcionando. Por exemplo:

https://localhost:7002/console

SSL

Segundo passo: Configurar o SSL de duas vias

1. Para testes, criar o certificado cliente ou em produção utilizar um já existente que seja confiável pelo servidor

Executar o setDomainEnv.cmd do domínio para setar as variáveis de ambiente.

Executar o CertGen

 java utils.CertGen -certfile certfile.cer -keyfile keyfile.key -keyfilepass password -cn ThiagoVespa

2. Converter para um formato conhecido do browser

Alguns browsers não reconhecem o PEM/DER gerado então é necessária a conversão para PKCS

 java utils.ImportPrivateKey -keystore ThiagoVespa.p12 -storepass password -storetype pkcs12 -keypass password -alias personal -certfile certfile.cer.pem -keyfile keyfile.key.pem -keyfilepass password

3. Carregar o certificado cliente no Browser ou utilizar algum dispositivo de segurança.

No Firefox:
Ferramentas, Opções (ou Editar, Preferências), Avançado, Criptografia, Certificados (ou Disp de segurança), Seus certificados, Importar o certificado com extensão p12.

No IE:
Ferramentas, Opções da Internet, Conteúdo, Certificados, Pessoal, Importar o certificado com extensão p12.

certificados

4. Configurar o servidor para requerer certificados do cliente

No console do weblogic, selecionar Environment, Servers e o seu server, SSL, Advanced, Alterar o Set Two Way Client Behavior para Client Certs Requested and Enforced, Aplicar alterações e reiniciar o servidor.

Two Way

5. Accessar a página com o SSL de duas vias

Accessar por exemplo o console:

https://localhost:7002/console

E o browser deverá pedir a você o certificado criado.

requisição

Pronto, a autenticação mútua está funcionando.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6