Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Próxima revisão
Revisão anterior
sas:certificados_digitais [2011/08/23 17:37] – created mazierosas:certificados_digitais [2013/10/10 15:19] (atual) – [Explorando certificados] maziero
Linha 1: Linha 1:
 +====== Certificados digitais ======
 +
 +Esta prática de laboratório visa explorar o uso de certificados digitais X.509 no âmbito da Web.
 +
 +===== Explorando certificados =====
 +
 +Acesse os sites Web da lista abaixo e analise os certificados que eles oferecem ao navegador:
 +
 +  * https://carrinho.americanas.com.br
 +  * https://sites.google.com
 +  * https://listas.inf.ufrgs.br
 +
 +Para cada site acessado, responda às seguintes questões:
 +
 +  * quem emitiu o certificado?
 +  * qual o período de validade do certificado?
 +  * qual a finalidade do certificado (conforme informado no campo de extensão ''Key Usage'', se estiver presente)?
 +  * qual a cadeia de certificação estabelecida?
 +
 +===== Explorando a cadeia de certificação =====
 +
 +O utilitário [[http://www.openssl.org|OpenSSL]] oferece várias funcionalidades para trabalhar com certificados SSL/TLS. Por exemplo, o comando abaixo permite visualizar a cadeia de certificação de um determinado serviço de rede:
 +
 +<code>
 +openssl s_client -showcerts -connect www.server.com:port_number
 +</code>
 +
 +Usando esse programa, analise a cadeia de certificação dos sites indicados no exercício anterior. Existem informações que não haviam sido encontradas anteriormente?
 +
 +===== Criando uma CA e assinando certificados =====
 +
 +Este roteiro (adaptado [[http://cs.uccs.edu/~cs691/crypto/openssl/example.htm|deste site]]) compreende a criação dos arquivos básicos que definem uma Autoridade Certificadora (CA) e do seu uso para assinar digitalmente o certificado de um site Web seguro.
 +
 +== Na CA ==
 +
 +Criar a estrutura de diretórios e arquivos usados pela CA, de acordo com os valores //default// definidos em ''/usr/lib/ssl/openssl.cnf'':
 +
 +<code>
 +mkdir demoCA demoCA/private demoCA/newcerts
 +touch demoCA/index.txt
 +echo "01" > demoCA/serial
 +</code>
 +
 +Gerar o certificado digital de nossa CA "raiz" (auto assinado), com validade (por exemplo) para 10 anos:
 +
 +<code>
 +openssl req -new -x509 -out certificate.pem -days 3650
 +</code>
 +
 +O certificado é gerado em no formato [[http://en.wikipedia.org/wiki/Privacy_Enhanced_Mail|PEM]] (//Privacy Enhanced Mail//). Pode-se visualizar o conteúdo do certificado recém gerado em um formato textual usando:
 +
 +<code>
 +openssl x509 -inform pem -in certificate.pem -text
 +</code>
 +
 +A seguir, mover o certificado e a chave privada da CA para os locais adequados:
 +
 +<code>
 +mv certificate.pem demoCA/cacert.pem
 +mv privkey.pem demoCA/private/cakey.pem
 +</code>
 +
 +== No servidor Web ==
 +
 +Inicialmente, gerar um **certificado auto-assinado** para o site Web seguro:
 +
 +<code>
 +openssl req -nodes -new -x509 -keyout site_privkey.pem -out site_certif_self.pem -days 365
 +</code>
 +
 +<note tip>
 +O certificado auto-assinado ''site_certif_self.pem'' e sua respectiva chave privada ''site_privkey.pem'' gerados nesta etapa poderiam ser usados na configuração de um site Web auto-certificado. Um site auto-certificado oferece comunicação segura do ponto de vista da confidencialidade, mas sua autenticidade não pode ser confirmada pelo cliente. 
 +</note>
 +
 +A partir do certificado auto-assinado, deve ser gerada uma **requisição de assinatura de certificado**, a ser enviada à CA:
 +
 +<code>
 +openssl x509 -x509toreq -in site_certif_self.pem -signkey site_privkey.pem -out site_request.pem
 +</code>
 +
 +O arquivo ''site_request.pem'' será enviado à CA para ser assinado digitalmente. Esse envio pode ser feito por e-mail ou outro meio, mesmo que não seguro.
 +
 +== Na CA ==
 +
 +Quando a CA recebe a requisição de assinatura de certificado, ela o assina usando sua chave privada e seu próprio certificado:
 +
 +<code>
 +openssl ca -policy policy_anything -out site_certif_signed.pem -infiles site_request.pem
 +</code>
 +
 +O certificado do site assinado pela CA pode ser visualizado através do seguinte comando:
 +
 +<code>
 +openssl x509 -inform pem -in site_certif_signed.pem -text
 +</code>
 +
 +A CA então envia o certificado assinado por ela (''site_certif_signed.pem'') de volta para o site Web.
 +
 +== No servidor Web ==
 +
 +Os arquivos ''site_certif_signed.pem'' (certificado assinado pela CA) e ''site_privkey.pem'' (chave privada do site) podem então ser **instalados no servidor Web**, de acordo com a configuração de cada servidor. Os arquivos ''site_certif_self.pem'' e ''site_request.pem'' podem ser descartados, pois não têm mais utilidade.
 +
 +Sugestões de servidores Web para testar o certificado: Apache, Lighttpd e NGinx.
 +
 +== No navegador (cliente) ==
 +
 +  * Acesse o servidor Web seguro a partir de outra máquina. O que aconteceu?
 +  * Para que o navegador aceite o certificado do site Web seguro, ele deve ter o certificado da entidade certificadora (CA) armazenado em sua base de certificados. Por isso, inclua o certificado de nossa CA (arquivo ''demoCA/cacert.pem'') no repositório de certificados do navegador.
 +  * Acesse novamente o servidor Web seguro. Mudou algo?