Certificação Digital – Lado do Servidor

Olá Pessoal,

Dando continuidade ao assunto Certificação Digital, comentarei e darei exemplo da configuração do servidor de aplicação com ênfase na autenticação com o certificado digital. O servidor de aplicação  Glassfish v3 será utilizado para o exemplo.

Como funciona a autenticação

Basicamente, a autenticação com certificado digital funciona da seguinte maneira:

1 – Uma requisição HTTP é feita para um recurso (arquivo, por exemplo) que necessita de autenticação, um recurso tido como seguro.

2 – O servidor de aplicação identifica que este recurso tem acesso restrito e informa ao requisitante.

3 – O requisitante efetua uma nova requisição, desta com o HTTPS e adiciona o certificado a requisição.

4 – O servidor de aplicação recupera o certificado da requisição HTTPS.

5 – O servidor verifica se o certificado digital é confiável, este processo é conhecido com handshake.

6 – O servidor de aplicação retorna o recurso requisitado, caso o handshake seja efetuado com sucesso.

Neste ponto surge a primeira duvida, o que é handshake, ou, como funciona o handshake?

Bem, o handshake é uma consulta, uma verificação que o servidor faz no TrustStore. O TrustStore é uma representação da lista dos certificados confiáveis, ou seja, tem o “hash” de todas as chaves públicas dos certificados das cadeia de confiança. Comento sobre esse assunto aqui.

No Glassfish o TrustStore pode ser encontrado na pasta %GLASSFISH_HOME%\domains\domain1\config\cacerts.jks.

Para visualizar seu conteúdo basta utilizar a ferramenta Keytool, com o seguinte comando:

keytool -list -keystore  %GLASSFISH_HOME%\domains\domain1\config\cacerts.jks

A senha será solicitada, por padrão é “changeit”.

Configurações no servidor

Para que a autenticação torne-se necessária o servidor deverá solicitar o certificado digital, isso sabemos, neste pontos que entram os ouvintes, ou listener, do Glassfish. Os listerner, como o próprio nome diz, escutam as portas do servidor e podem efetuar diversos processos. O Glassfish por padrão vem configurado com três listeners:

– httplistener-1: porta 80.

– http-listener-2: porta 443.

– admin-listener: porta 4848.

A porta 443 é a porta padrão do protocolo HTTP para requisições seguras, ou seja HTTP com SSL, e será a porta utilizada para as configurações de autenticação.

Acesse a administração do Glasshfish via interface gráfica, por padrão o endereço é: http://localhost:4848

1 – Selecione o listener que deseja configurar (Figura 03).

C:\Documents and Settings\yross\Meus documentos\Minhas imagens\artigo\configuracao servidor\listeners_001.bmp

2 – Na aba SSL modificar algumas informações (Figura 04):

Client Authentication: habilitará a autenticação via certificado digital.

Certificate NickName: Alias do certificado contido no keystore do servidor que será utilizado para a autenticação, ou hand-shake.

3 – Feito isso, basta clicar Save.

C:\Documents and Settings\yross\Meus documentos\Minhas imagens\artigos\configuracao servidor\listeners_002.bmp

Neste momento, todas as requisições HTTPS serão ouvidas pelo listener http-listener-2 e o cliente deverá ter um certificado digital para que a requisição seja atendida.

Esta foi apenas uma explanação básica sobre o assunto, existe outras possibilidades de configurações que dependem da necessidade de cada um.

O próximo passo será configurar a aplicação afim de determinar que os recursos sejam acessados via HTTPS. Este será o próximo post, ate lá.

2 comentários em “Certificação Digital – Lado do Servidor

  1. Olá,
    Gostaria de saber se possui algum material que explique a implementação de chaves em uma página jsp/jsf… Estou realizando meu tcc sobre votações online, entretanto estou tendo problemas com a encriptação dos meus dados…
    Agradeceria muito se pudesse ajudar de alguma forma.
    Att,
    Danilo

  2. Ythalo…

    Queria uma ajuda sua…
    Estou tentando consumir um webserve da nfe, atraves de um client JSF 2.0 com Glassfish, na hora de indicar meu certificado ele lança exception, a mesma classe eu utilizo em uma app desktop e funciona corretamente.
    Se puder me ajudar meu e-mail é altitdb@hotmail.com

    Desde já muito obrigado.

Deixe um comentário