Certificados digitais

Esta prática de laboratório visa explorar o uso de certificados digitais X.509 no âmbito da Web.

Acesse os sites Web da lista abaixo e analise os certificados que eles oferecem ao navegador:

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?

O utilitário 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:

openssl s_client -showcerts -connect www.server.com:port_number

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?

Este roteiro (adaptado 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:

mkdir demoCA demoCA/private demoCA/newcerts
touch demoCA/index.txt
echo "01" > demoCA/serial

Gerar o certificado digital de nossa CA “raiz” (auto assinado), com validade (por exemplo) para 10 anos:

openssl req -new -x509 -out certificate.pem -days 3650

O certificado é gerado em no formato PEM (Privacy Enhanced Mail). Pode-se visualizar o conteúdo do certificado recém gerado em um formato textual usando:

openssl x509 -inform pem -in certificate.pem -text

A seguir, mover o certificado e a chave privada da CA para os locais adequados:

mv certificate.pem demoCA/cacert.pem
mv privkey.pem demoCA/private/cakey.pem
No servidor Web

Inicialmente, gerar um certificado auto-assinado para o site Web seguro:

openssl req -nodes -new -x509 -keyout site_privkey.pem -out site_certif_self.pem -days 365
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.

A partir do certificado auto-assinado, deve ser gerada uma requisição de assinatura de certificado, a ser enviada à CA:

openssl x509 -x509toreq -in site_certif_self.pem -signkey site_privkey.pem -out site_request.pem

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:

openssl ca -policy policy_anything -out site_certif_signed.pem -infiles site_request.pem

O certificado do site assinado pela CA pode ser visualizado através do seguinte comando:

openssl x509 -inform pem -in site_certif_signed.pem -text

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?
  • sas/certificados_digitais.txt
  • Última modificação: 2013/10/10 15:19
  • por maziero