Sunday, November 27, 2011

Autenticação com certificados digitais (Portuguese)



Um estudo sobre o necessário para fazer autenticações com certificados digitais, em qualquer tecnologia.

Este guia apresenta as configurações necessárias para fazer uma autenticação com certificado digital em aplicações Web.

Requisitos

Para a implementação da funcionalidade, é necessário antes entender como funciona:
  • Certificados digitais
  • Secure Socket Layer (SSL)
  • Configuração do SSL no seu servidor Web.

Implementação 


Para que a aplicação web valide o certificado digital do cliente, deve ser feito o seguinte:

  1. Configurar o Internet Information Services (IIS) para utilizar conexão segura (SSL) com autenticação do cliente (para ele requisitar certificado digital do browser do usuário).
  2. Customizar no IIS as ACs (Autoridades Certificadoras) confiáveis. O certificado digital fornecido pelo cliente deverá ter sido emitido por alguma entidade certificadora confiável que está cadastrada no servidor Web.
  3. Criar uma aplicação Web e fazer o deploy no IIS. Ao estabelecer a conexão, o SSL irá requisitar um certificado cliente. A implementação do SSL irá verificar se o certificado digital fornecido é válido perante as ACs confiáveis cadastradas no servidor. Uma vez validadas, a aplicação web poderá consultar os dados do certificado digital da sessão do usuário e cruzar com dados de seu repositório.

Se o usuário tiver um certificado digital válido instalado no browser, quando acessar a página irá aparecer uma janela para que ele confirme se é dono digitando sua senha. Se o usuário tiver apenas certificados digitais emitidos por CAs que não estão registradas no servidor, ou então, se não tiver nenhum certificado digital, dependendo da configuração, não conseguirá acessar a página. 

A configuração da obrigatoriedade do certificado digital na autenticação pode variar. Existem três tipos de comportamentos que podem ser definidos no SSL do servidor:

  1. Não exige certificados digitais do cliente.
  2. Exige certificados digitais do cliente.
  3. Informar certificados digitais de forma opcional.

No terceiro caso, se o usuário não possuir certificado digital, ou então se possuir mas não quiser usar, irá conseguir acessar a página normalmente. A conexão também continuará sendo segura da mesma forma, pois o browser irá gerar uma chave aleatória, conforme é documentado na especificação do SSL.

Documentos e-CPF e e-CNPJ

Para ler o número dos documentos do e-CPF e e-CNPJ, basta a aplicação capturar os dados do certificado digital da sessão e ler os valores que estão em hexadecimal nos campos otherName do certificado digital.  



O ICP-Brasil, define onde encontra-se os números dos documentos no certificado digital quando:

Pessoa física: o campo que guarda o número do CPF é o otherName com o identificador OID de valor 
2.16.76.1.3.1 com o valor no formato:
  • Data de nascimento do titular no formato ddmmaa;
  • Cadastro de Pessoa Física (CPF) do titular;
  • Número de Identificação Social - NIS (PIS, PASEP ou CI);
  • Ndo Registro Geral (RG) do titular;
  • Siglas do órgão expedidor do RG e respectiva UF;


Pessoa jurídica
: o campo que guarda o número do CNPJ é o otherName com o identificador OID de valor OID 2.16.76.1.3.3.

Para detalhes de outros campos, veja o 'Requisito I.10" na especificação do e-Cpf e e-Cnpj, publicado emhttp://www.iti.gov.br/twiki/pub/Homologacao/Documentos/MCT6_Vol_I.pdf sessão "2.1 Requisitos gerais de certificação digital."

Veja também

References

  1. SERPRO. Política de Certificação da Autoridade Certificadora do SERPRORFB. Acessado em 07 de junho de 2010.
    https://ccd.serpro.gov.br/acserprorfb/docs/pcserprorfbA3_v2.1.pdf
  2. APACHE.ORG. Apache Tomcat Configuration Reference. Acessado em 02 de junho de 2010.
    http://tomcat.apache.org/tomcat-5.5-doc/config/http.html
  3. CERTISIGN. Por dentro da certificação digital. Acessado em 01 de junho de 2010.
    http://www.certisign.com.br/certificacao-digital/por-dentro-da-certificacao-digital
  4. DEVMEDIA. Autenticação de usuários com Certificado digital. Acessado em 07 de junho de 2010.
    http://www.devmedia.com.br/articles/viewcomp.asp?comp=9495&hl=
  5. IBM. Como funciona o SSL. Acessado em 06 de junho de 2010.
    http://publib.boulder.ibm.com/tividd/td/TRM/GC32-1323-00/pt_BR/HTML/admin231.htm
  6. MICROSOFT. X.509 Technical Supplement. Acessado em 07 de junho de 2010.
    http://msdn.microsoft.com/en-us/library/ff647097.aspx
  7. MICROSOFT. Brokered Authentication: X.509 PKI. Acessado em 07 de junho de 2010.
    http://msdn.microsoft.com/en-us/library/aa480565.aspx
  8. CERPRO. Certificação digital. Acessado em: 02 de junho de 2010.
    http://www.serpro.gov.br/servicos/certificacao_digital
  9. UNIFESP. Infra-estrutura de Chave Pública (PKI) – O Diferencial da VeriSign. Acessado em 07 de junho de 2010.
    http://telemedicina.unifesp.br/pub/Document/Programming/PublicKey/CertiSign/chave_publica_pki/introduction.html
  10. UOL. HOW STUFF WORKS. Como funciona o certificado digital. Acessado em Acessado em 07 de junho de 2010.
    http://informatica.hsw.uol.com.br/certificado-digital.htm
  11. UOL. IMASTERS. TCP/IP Certificados Digitais e segurança. Acessado em 06 de junho de 2010.
    http://imasters.uol.com.br/artigo/3174/seguranca/tcpip_parte_19_certificados_digitais_e_seguranca/
  12. VASSILEV, Apostol; HUTCHINSON, Michael. Authentication Framework for Smart Cards. Texas, USA. 2010.
  13. WIKIPEDIA. ICP-BRASIL. Acessado em 08 de junho de 2010.
    http://pt.wikipedia.org/wiki/ICP-BRASIL
  14. WIKIPEDIA. X.509. Acessado em 05 de junho de 2010.
    http://en.wikipedia.org/wiki/X.509

No comments:

Post a Comment