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.
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
Restartar o server.
3. Acessar uma página para verificar se o SSL simples está funcionando. Por exemplo:
https://localhost:7002/console
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.
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.
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.
Pronto, a autenticação mútua está funcionando.
[...] ele para autenticação de duas vias, conforme descrito nesse post, mas foi necessário armazenar algumas informações de segurança para aderir a requisição de um [...]