Página Inicial
 
Produtos
GPAI
CRM Educacional
Chat
Utilitarios
   
Serviços
Segurança .NET
Migração
Interconexão
Mobile .NET
Treinamento
Servidores
Business Intelligence
   
Institucional
Saiba Mais
Boletins
Parceiros
Fale Conosco
   
Colaboração
Blog
Forum
Artigos
Lista de usuários
   
Interno
Webmail
   
Login

Utilizando Certificados Digitais

O problema e a “solução”

por Marcelo Sincic

Atualmente todos estão preocupados com a segurança e autenticidade de documentos e relacionamentos eletrônicos, uma vez que muitos usuários utilizam a internet para enviar documentos, consultar processos e realizar transações financeiras, fiscais e, recentemente, legais. Cada vez mais notamos que pedir o nome do usuário e uma senha não é a forma ideal de garantirmos a autenticidade, e intuições como bancos utilizam quatro ou cinco métodos de validações adicionais alem do clássico “user-pass”.

Neste ponto é que surgem as chaves criptográficas, armazenadas em certificados digitais, que garantem a identidade de uma empresa, pessoa física ou um site na internet. Para termos uma idéia da importância e necessidade desta tecnologia, desde o ano passado algumas transações no site da Receita Federal só podem ser feitas por quem tem um certificado, bem como o FINEP para universitários que queiram financiamento.

O certificado é um arquivo de pouco mais de 1Kb que contem uma chave criptográfica e dados de seu proprietário. No caso do programa ICP-Brasil, os dados gravados são CPF, RG, etc.

O programa ICP-Brasil (Infra-estrutura de Chaves Publicas, sigla em português para a tecnologia PKI, ou, Public Key Infrastructure) juntamente com seus agregados de identificação, o e-CPF e o e-CNPJ, que respectivamente identificam uma pessoa física e uma jurídica. Uma observação importante: a tecnologia real se chama PKI, o ICP-Brasil é uma série de medidas legais, técnicas e normas que possibilitaram o surgimento de versões virtuais de nossos CPFs e CNPJs.

A aceitação deste método de autenticação e segurança ainda é baixa, em primeiro lugar porque o custo é relativamente alto para o usuário final, que pode variar entre o modelo A1 que custa em torno de R$ 100,00 e chegando ao kit do modelo A3 em R$ 700,00. Outro problema é que os usuários em geral ainda não se deram conta do risco que existe no uso da internet sem o certificado nas duas pontas e as empresas ainda podem se esquivar de responsabilidades por utilizar múltiplos métodos de segurança.

Neste artigo veremos agora como se deve utilizar certificados digitais, sejam os emitidos pelo ICP-Brasil ou utilizando o modelo PKI já disponível no Windows 2000/2003. Também abordaremos como emitir certificados para nossos usuários sem que eles tenham o custo de comprar um.

 

Argumentos para utilizarmos certificados

Para entender os tipos de certificados e o que está por trás de toda esta tecnologia PKI devemos, em primeiro lugar, abordar a questão do custo e tipo dos certificados. Quando falamos em tipos de certificados na verdade nos referimos a como chegaram até o cliente e como o cliente o usa fisicamente, e não o certificado em sí mesmo.

O certificado do modelo A1 consiste em um arquivo que contem duas chaves, uma pública e outra privada Já o modelo A3 é o conhecido “smartcard”, que agora bancos como Itaú e Bradesco passaram a distribuir aos seus clientes. A utilização dos cartões A3 tem seu custo mais elevado em razão do leitor que é necessário adquirir. Algumas empresas vendem o kit A3, como a Itautec, contendo o cartão, a mídia com o arquivo, o leitor de smartcard que é conectado na USB e uma visita técnica para instalação. Como o A1 é apenas distribuído com uma mídia simples, pode-se encontrá-lo ao preço de R$ 150,00 no site do SERASA, CertSign e outros. O A3 também pode ser comprado nos mesmos lugares ao preço médio de R$ 400,00. Mas neste caso a leitora não está incluída. Como em qualquer negociação é possível procurar a “concorrência”, já que os certificados são vendidos por diversas empresas alem destas citadas.

O segundo argumento para utilização dos certificados pessoais é que nós, usuários, ainda não nos demos conta do real perigo oferecido pela certificação como é utilizada atualmente. Para entendermos este risco veja a Figura 1. Podemos notar que o modelo tradicional, apenas o servidor da empresa possui a chave de autenticação (vide Nota 1), portanto ele é quem diz ser. Fazemos isto por utilizar uma chave criptográfica para montar um servidor SSL (https), que nada mais é do que ter certeza de que não somos um fishing. Mas quem garante que “você” realmente é quem diz ser?

 

Nota 1 – Chaves Públicas e Privadas

A chave pública (Public Key) é aquela que apenas o emissor possui, enquanto a chave privada (Private Key) é trocada com todos os que acessam o site. Esse modelo é chamado de assimétrico, já que a utilização da chave pública para criptografar o faz com o algoritmo que apenas a privada consegue abrir, e vice-versa. Ou seja, com a chave publica lemos o que foi criptografado com a chave privada, mas não conseguimos alterar, uma vez que apenas a privada consegue abrir o que a pública criptografou, garantindo que o dono do certificado é ele mesmo, pois uma chave “falsificada” não conseguiria abrir a assinatura digital no documento ou no site.

 

No segundo desenho notamos que com o certificado do usuário a recíproca é verdadeira, tanto o usuário quando o servidor são confiáveis e autênticos. Esse conceito é chamado de assinatura digital (Digital Signature).

Anteriormente a única garantia que um banco ou uma empresa tem em relação à quem está logando em uma página privada ocorre através de identificadores, como por exemplo um número de agência e conta, para os sites de banco, ou então um endereço de email para demais sites.

Esses métodos eram facilmente burlados, por exemplo, alguém utilizando um trojan descobria o que você digitou e poderia utilizar esses dados para acessa a sua conta. Então começaram nos bancos os irritantes métodos físicos, cartão com códigos, letras que mudam de posição, teclado que se movimenta na tela, número de confirmação grafado no cartão e outros que muitas vezes nos fazem desistir da transação.

Figura1

Figura 1 – Utilizações padrão de certificados

Como funciona a estrutura PKI

Então agora que já entendemos que certificados digitais só nos ajudam, como funciona a tecnologia PKI?

A Figura 2 demonstra como ele funciona e suas vantagens em uma aplicação corporativa, onde apenas quem possui um certificado emitido pela empresa consegue o acesso. Este processo é chamado de “não repúdio”.

Claro que aqui estamos apenas alistando um exemplo de aplicação, sendo que os certificados são emitidos pela própria empresa e não utilizando o modelo e-CPF/e-CNPJ que são emitidos pelo SERPRO ou outra credenciada.

Figura2

Figura 2 – Modelo básico com acesso utilizando certificados

 

Detalhando melhor os principais componentes PKI, podemos destacar 4 serviços principais:

·         CA (Autorizada de Certificação) que emite os certificados. As certificadoras são bem conhecidas empresas que mantém um banco de dados com os certificados emitidos, bem como o CRL atualizado. Nem sempre se utiliza a CA para emissão de certificados e sim um subordinado.

·         Subordinate CA (Autoridade de Certificação Subordinada) que também emite os certificados, mas utilizando uma “corrente” ligada a CA raiz. Este modelo é utilizado pela maior parte das certificadoras conhecidas, como a VeriSign, CertSign e outras. No Brasil, como exemplo, o SERASA emite certificados SSL que são subordinados a GlobalSign. O motivo é muito simples, as “certificadoras confiáveis” já estão pré-configuradas nos sistemas operacionais, como pode ser visto na figura 3. Esta lista é uma parte na encontrada no Internet Explorer ao entrar em “Opções-Conteudo-Certificados” e o SERASA não consta na lista, obviamente porque é uma empresa que não é conhecida fora do Brasil para ser incluída. Algumas semanas atrás foi noticiado que o IE7 trará embutido na sua lista de certificadoras confiáveis o ICP, o que permitirá que as empresas brasileiras deixem de ser subordinadas a uma CA internacional

 

Figura 3

Figura 3 - Internet Explorer

·         CRL (Certificate Revogation List) é um servidor mantido pela CA ou subordinada e que mantém uma lista dos certificados que foram revogados ou cancelados. Esta lista nos protege contra o mau uso ou desvio do certificado para outros fins. A Verisign a alguns anos atrás teve que noticiar que havia emitido dois certificados para a Microsoft quando na verdade os solicitantes utilizaram documentos falsos. A solução neste caso é revogar os certificados e publicá-lo na CRL.

·         Certificado Digital, arquivo que contem as chaves pública e privada. A chave privada só é conhecida do proprietário e da CA que a emitiu. A chave pública é conhecida por todos os que se comunicam com o proprietário da chave. O modelo de criptografia utilizado é assimétrico, o proprietário utiliza a chave privada para criptografar suas mensagens e a chave pública contém o algoritmo para descriptografar. O inverso na comunicação ocorre quando o destinatário envia para o proprietário utilizando a chave pública para criptografar, garantindo que apenas o proprietário conseguirá descriptografar, uma vez que ele é o único que tem a chave inversa, neste caso a privada. O certificado contém um importante dado dentro dele chamado de “subject”, onde consta os dados de quem é o proprietário da chave e outros dados que a certificadora queira incluir como mostra a figura 4.

 

Figura 4 - Subject do certificado

Configurando um servidor para utilizar certificados

Agora que já temos um bom panorama do porque os certificados são importantes e como sua infra-estrutura foi planejada vamos configurar o IIS para utilizar os certificados. Utilizaremos uma certificadora baseada no Windows 2003 para a emissão, já que para podermos fazer o processo de autenticação por certificados precisamos que o servidor IIS esteja com SSL habilitado. O meu servidor já está certificado e abordaremos como este processo foi feito adiante. Utilizarei neste exemplo um certificado próprio emitido pelo Windows 2003, mas o processo é o mesmo para o e-CPF/e-CNPF, apenas ao invés de utilizar um servidor próprio utilizaria um do ICP Brasil.

Talvez você se pergunte porque utilizar uma certificdora própria se o ICP-Brasil já existe para isso, mas lembre-se de que no inicio do artigo foi comentado que os certificados e-CPF/e-CNPJ são pagos, e com preços bastante elevados por sinal.

Outra questão é como fazer o mesmo processo em servidores, como o Apache, por exemplo. Qualquer servidor web permite o uso de certificados para SSL, mas obviamente não é tão simples quanto no IIS. Quanto a emissão de certificados, tocamos no calcanhar de aquiles, já que emissão de certificados no Linux é bem mais complexo do que no Windows 2003, mas também pode ser feito. Contudo, não vamos abordar esse tema nesse artigo.

Voltando ao IIS, veja na Figura 5 que para utilizar a opção “Require client certificate” é necessário também ter o servidor certificado. Caso não possua o seu servidor com SSL poderá utilizar a opção “Accept client certificate” que não exige, apenas permite o uso de certificados pelo cliente, não garantindo assim um bom método de autenticação.

Figura 4

Figura 5 - Habilitando o uso de certificados no IIS

A Figura 6 demonstra o que acontece ao tentar acessar um servidor certificado e com obrigatoriedade de certificado pelo cliente. O erro “403.7” obviamente pode ser redirecionado para uma página de erro customizada que informe ao usuário que ele precisa comprar um certificado e a lista de onde isto pode ser feito, por exemplo. Não tente fazer este processo por try-catch, pois a exigência do certificado é tratada no IIS e não na página.

Figura%205

Figura 6 - Acesso proibido por falta de um certificado

Após instalar o certificado para o meu usuário, Figura 7, uma lista dos certificados que eu possuo na maquina é mostrada, permitindo que eu escolha qual utilizar. Esta lista só aparece caso o usuário solicite ou se existirem múltiplos certificados.

Figura%206

Figura 7 - Certificado sendo solicitado ao usuário

Utilizando os dados do certificado

O próximo passo é ler os dados do certificado para validar o usuário, e isto é mostrado na Figura 8, onde está listado o conteúdo do “subject” com os dados utilizados quando comprei o certificado. Para extrair estes dados foi utilizado o código da Listagem 1, que é extremamente simples.

 

Figura 7

Figura 8 - Acesso permitido e os dados do certificado exibidos

Listagem 1. Código ASP para ler os dados do certificado

  <HTML>

       <BODY>

             <H1>Bem-vindo </H1>

             <%=Request.ClientCertificate.Subject%>

       </BODY>

</HTML>

 

Vale lembrar que neste certificado o subject é o email do cliente, mas isto é configurável, portanto o subject de um e-CPF será o numero do documento.

Emitindo e certificando o IIS

A grande sacada é que o Windows 2000 e o Windows 2003 já possuem certificadoras !!!!

Portanto, esqueça o custo e a dificuldade, você mesmo pode criar a certificadora, certificar o seu site e seus usuários, precisando para isso ter apenas um servidor e o CD de instalação na mão.

Para instalar o serviço de certificação no seu Windows utilize o método normal de instalação de componentes: Painel de Controle -> Adicionar/Remover Programas -> Componentes do Windows.  Escolha na lista a opção “Certificate Authority”. Na tela de configuração do componente selecione “Standalone Certification Authoriry” e informe os dados de sua empresa, mas note que existe a opção para validade dos certificados. Se escolher a validade muito baixa seus usuários estarão sempre tendo que renová-lo. Por outro lado, certificados com tempo muito longo podem ter problemas de “vazamento” por parte do usuário. Utilize um período como 1 ou 2 anos que é o padrão utilizado hoje nos certificados comerciais.

Para certificar o IIS utilizando os seus próprios certificados o processo é o mesmo que utilizar um certificador comercial. Abra o gerenciador do IIS, abra propriedades do seu site e clique na aba “Security”, como mostra a Figura 9. Clique no botão “Server Security” e preencha com os dados do seu site. (Importante: Na opção “Issued to” coloque o nome do seu domínio na internet, *.seudominio.com.br, pois se fizer diferente disto no momento em que seu site for aberto ocorrerá um erro informando que o certificado não pertence ao seu site). Ao final terá um resumo dos dados como o da Figura 10.

Figura1

Figura 9 – Configurando a segurança

 

Figura2

Figura 10 – Resumo dos dados do certificado

Durante o processo foi gerado um arquivo texto, normalmente no raiz do disco de sistema com o nome “certreq.txt”. O conteúdo deste arquivo será a sua chave privada, como mostra a Listagem 2.

 

Listagem 2. Arquivo certreq.txt

-----BEGIN NEW CERTIFICATE REQUEST-----

MIIDUDCCArkCAQAwdTELMAkGA1UEBhMCQlIxCzAJBgNVBAgTAlNQMRIwEAYDVQQH

EwlHdWFydWxob3MxEDAOBgNVBAoTB0V4ZW1wbG8xEDAOBgNVBAsTB0V4ZW1wbG8x

ITAfBgNVBAMeGABtAHMAaQBuAGMAaQBjAF8AdwAyAGsAMzCBnzANBgkqhkiG9w0B

AQEFAAOBjQAwgYkCgYEAwcRAXg3lIfpu9NbN0vpgPw9eR1P3scccq79fwO2Xkc/X

rpZmxPzdsLnN0jwFfLLe7GotTnBotlLrsgipCevCs6wEM8gY0EJmdqxYqLuk783J

IXRoTuB5RbvdMUtBj/6wAVOaVAUJTeAvK9OMdqNzS9iCRr25XWpECjbWXor8IoUC

AwEAAaCCAZkwGgYKKwYBBAGCNw0CAzEMFgo1LjIuMzc5MC4yMHsGCisGAQQBgjcC

AQ4xbTBrMA4GA1UdDwEB/wQEAwIE8DBEBgkqhkiG9w0BCQ8ENzA1MA4GCCqGSIb3

DQMCAgIAgDAOBggqhkiG9w0DBAICAIAwBwYFKw4DAgcwCgYIKoZIhvcNAwcwEwYD

VR0lBAwwCgYIKwYBBQUHAwEwgf0GCisGAQQBgjcNAgIxge4wgesCAQEeWgBNAGkA

YwByAG8AcwBvAGYAdAAgAFIAUwBBACAAUwBDAGgAYQBuAG4AZQBsACAAQwByAHkA

cAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcgOBiQAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMA0GCSqGSIb3DQEBBQUA

A4GBAG3b+qC3ta8nYl6tD2Ens4El/qsvlMvn5QaI88w4zhSXmK4gnj3coIzAbUl8

MC0s4C/H9x1fJYhOfnore8FyUkTTv8SlobP7k3Y+eHI994OqUbeZuxTFme1j0O0A

EiCOmyFyuz9kUSCU/4lQ5I8ZhWbcW9ZSkyYWDiCjcpF+Gw/y

-----END NEW CERTIFICATE REQUEST----

 

Por mais incrível que pareça neste emaranhado de letras e números estão gravados os dados que foram informados no IIS na tela de configuração. O próximo passo é utilizar a página da certificadora para emitir o certificado para servidor. Utilize a url http://localhost/certsrv para acessar a certificadora como na figura 11. Escolha a opção “Request a certificate” -> “Advanced certificate request” -> “Submit a certificate request by using a base-64-encoded …”. Na caixa de texto cole o conteúdo do arquivo texto ou então use o link para encontrar o arquivo certreq. No final receberá uma tela de confirmação de pedido encaminhado e avisa que é necessário o administrador liberar o seu certificado.

 

Figura3

Figura 11 – Certificadora Windows 2003 baseada em web

 

Esta liberação é feita na ferramenta “Certification Authority” nas ferramentas administrativas do certificador. Ao abrir vá à árvore “Pending Requests” e o certificado estará listado como na figura 12, clique no item e com o botão direito escolha “All Taks” -> “Issue”, disponibilizando o certificado.

Figura4

Figura 12 – Liberando os certificados na ferramenta de administração da certificadora

 

Agora volte na página onde o certificado foi solicitado e escolha a opção “View status of pending request”.Seu certificado já está aguardando para ser copiado, como mostra a figura 13. Basta clicar e salvá-lo em um local apropriado, lembrando que este certificado nunca pode cair em mãos erradas, sua segurança está baseada nos dados nele contidos.

Figura5

Figura 13 – Recebendo o certificado após a liberação

 

Com o arquivo do certificado em mãos, vamos terminar o processo no IIS. Volte no seu web site, abra as propriedades e navegue até a guia segurança e em seguida clique no botão “Server certificate”. A tela seguinte permite terminar o processo iniciado anteriormente quando criamos a chave, como mostra a figura 14. Para finalizar clique no botão “Edit...” da guia segurança do web site e force o uso de certificados para acesso ao site, bem como a opção “Require client certificates” mostrado na figura 15.

Figura6

Figura 14 – Instalando o certificado emitido no servidor IIS

 

Figura7

Figura 15 – Configurando o uso dos certificados

Pronto!!!  Seu IIS já está com SSL habilitado e permitindo acesso apenas ao usuários possuidores de certificados digitais. Um processo adicional que pode ser feito ainda é gerar a lista das certificadoras permitidas, restringindo certificados de outros domínios que não estejam sobre seu controle. Para fazer isso clique em “Enable certificate trust list” e escolha as certificadoras que seus usuários poderão utilizar, como mostra a figura 16. Não esqueça de colocar na lista as certificadoras do ICP Brasil caso vá utilizá-las.

Figura8

Figura 16 – Gerando a lista de certificadoras aceitas

Emitindo e certificando o usuário

Terminada a certificação do servidor precisamos certificar os usuários. Como a configuração do servidor exige certificados para acesso ao site o processo de certificação do usuário se tornou imprescindível e não apenas recomendado como anteriormente.

Para emissão instrua o usuário a acessar a certificadora pelo mesmo link utilizado para emitir o certificado do IIS. Processa com a opção de solicitação e no tipo de certificado escolha novamente “Advanced certificate request” e na tela seguinte a opção para submit de formulário, onde o usuário irá preencher os dados e receberá a informação para aguardar a liberação.

Vá à ferramenta “Certificate Authority” como descrito anteriormente e libere o certificado. Instrua o usuário a retornar ao site da certificadora e escolher a segunda opção para receber o certificado como mostra a figura 17. Ao clicar em “Install Certificate” o certificado é automaticamente instalado na máquina do usuário, diferente do processo quando para o servidor que o certificado é apenas copiado.

Figura9

Figura 17 – Instalação do certificado do usuário

 

Concluído este processo o usuário já irá conseguir acessar o seu site de forma autenticada e será possível suas páginas com o código apresentado anteriormente identificar o usuário e ler os dados que foram preenchidos no formulário da certificadora, que pode ser acessada localmente ou mesmo pela internet se o seu servidor estiver publicado.

Como último conselho, caso sua certificadora esteja na internet, lembre-se de fazer backup do “System State” periodicamente, já que a única forma de copiar os certificados da certificadora e dos usuários é essa. Isso é importante porque perder a certificadora causa a perda também da CRL (Certificate Revogation List) que irá impedir os certificados de serem utilizados.

Conclusões

Neste artigo abordamos o que são os certificados digitais, como funcionam, a estrutura que existe para funcionamento e sua utilização no servidor web. Vale a pena lembrar novamente que o e-CPF/e-CNPJ são certificados e que o ICP-Brasil nada mais é do que uma certificadora, portanto todos os exemplos aqui são válidos. Inclusive o modo como administramos a solicitação, a liberação e a instalação dos certificados é a mesma utilizada pelas certificadoras comercias, apenas com interfaces mais elaboradas.

A utilização dos certificados digitais é simples mas poderosa permitindo autenticação segura do usuário.

Vemos que a segurança ganha com o processo é muito maior que o custo envolvido, principalmente quando lembramos que uma fraude utilizando o nome de outra pessoa é responsabilidade do site e não do cliente que foi fraudado segundo o Código do Consumidor.

 

Links e Referências Interessantes

http://www.icpbrasil.gov.br/

Site oficial do ICP Brasil (Infra-estrutura Chaves Públicas).

 

http://www.certisign.com.br/home/default.jsp

Uma das mais importantes certificadoras mundiais, que vende o e-CPF e o e-CNPJ.

 

http://www.rhbr.com.br/modules.php?name=News&file=article&sid=366

Passo a passo de instalação do SSL para o Apache

 

 

 

 

 

 

 

Marcelo Sincic (ms@avancoinformatica.com.br) é certificado Microsoft como MCITP, MCTS, MCPD, MCSA, MCDBA, MCSD, MCAD e MCT pela IBM como CLP do Domino 6.5 e pela SUN como Java Trainer. Atualmente como consultor e instrutor ministrando treinamentos em .NET e plataforma Microsoft, mas é desenvolvedor desde 1989 com Clipper S’87 e Dbase III rodando Novell 2.1. Bons tempos aqueles...

 

  41467  acessos desde 22/01/2004