Certificados e OpenSSL - A Sopa de Letras

A sopa de letras: HTTPS, TLS, SSL, HSTS, CA, PGP, GPG e OpenPGP. Uma breve explicação sobre cada um deles e como se usa.

[ Hits: 4.336 ]

Por: Esli Silva em 30/01/2020 | Blog: https://esli.blog.br


Introdução



Atualmente, o Google e seu mecanismo de busca, estão punindo quem não utiliza protocolos de segurança, antes marcando os sites seguros, hoje marcando sites como inseguros e rebaixando-os dos resultados quando um usuário realiza alguma pesquisa. Em futuro breve, os navegadores irão exibir uma página de alerta ao usuário, o que certamente causará o abandono do site pelo usuário leigo.

Toda vez que você entra em um site e realiza algum tipo de login, está dizendo: "sim, eu confio neste site, por isso estou disposto a compartilhar minhas informações pessoais com ele". Esses dados podem incluir seu nome, sexo, endereço físico, endereço de e-mail, geolocalização, dados e atividades feitas nas redes sociais, cartão de crédito, carteiras digitais, dentre outras.

Mas como você sabe que pode confiar em um site específico? Em outras palavras, o que o site está fazendo para proteger sua transação, para que você possa confiar nela?

HTTPS

Por padrão, um site não é seguro se ele usa o protocolo HTTP. Adicionar um certificado configurado através do host do site à rota, pode transformar o site de um site HTTP não seguro em um site HTTPS seguro. O ícone de cadeado geralmente indica que o site está protegido por HTTPS.

HTTP é uma sigla em inglês para Hypertext Transfer Protocol ou "Protocolo de Transferência de Hipertexto". Trata-se, portanto, de um código responsável por fazer a comunicação entre os dados de uma página na internet e quem está fazendo o acesso, geralmente, pela porta 80. Ou seja, é por causa dele que você está lendo este artigo.

O HTTP Over SSL, ou HTTPS, é uma implementação idêntica do HTTP, mas com uma camada adicional, o TLS.

Já vi artigos afirmarem que HTTPS, o S é de Secure (Seguro), mas isto induz ao erro, pois existe o SHTTP que é descrito na RFC, este sim é o "Secure Hypertext Transfer Protocol".

O HTTP Over SSL (HTTPS) é descrito na RFC 2818. Na documentação desta RFC, há uma descrição excelente: "Conceitualmente, HTTP/TLS é muito simples. Basta usar HTTP sobre TLS exatamente como você usaria HTTP sobre TCP"

SSL e TLS

TLS é a geração atual do antigo protocolo SSL (Secure Socket Layer).

O TLS atualmente na versão 1.2 (a mais adotada) está descrito na RFC. Há também o TSL 1.3.

A função do HTTPS é exatamente a mesma do HTTP, porém, o protocolo apresenta uma camada que criptografa os dados e a comunicação entre o servidor e quem está acessando, o SSL geralmente é realizada na porta 443. Desse modo, o servidor que é acessado para repassar os dados das páginas para o seu computador precisa ser autenticado por meio de chaves e certificados digitais para que seja garantida a segurança na conexão à página.

O agente que atua como cliente HTTP, também atua como cliente TLS. Ele deve iniciar uma conexão com o servidor na porta apropriada e, em seguida, envia um "Olá" (é o TLS ClientHello) para iniciar o "aperto de mão" (é o TLS handshake) - (assim ambos se conhecem e se comunicam ba-du-tsss rsrsss). Quando o handshake termina, o cliente inicia a primeira solicitação HTTP. Todos os dados HTTP seguintes SERÃO enviados com o tipo TLS "dados de aplicação", daí o HTTP sobre TLS.

CA

Você que está lendo este artigo confia no certificado que está neste site. O seu Sistema Operacional e/ou seu navegador possui instalado a CA (Autoridade de Certificação) e seu navegador confia nos certificados emitidos por ela. E, através de algumas validações, meu site possui um certificado válido emitido pela CA que seu computador confia.

Uma destas validações é o OCSP (Protocolo de Certificação Online de Estado) descrito na RFC 6960. Outras validações, como invalidação de certificados e autoridades são enviadas ao cliente no formato de atualização (este é um dos motivos da Microsoft ainda enviar atualizações ao Windows Vista e 7 e há bem pouco tempo atrás ao Windows XP).

No Linux, a lista de CA raiz estão em:
  • /usr/share/ca-certificates/
  • /usr/local/share/ca-certificates/
  • /etc/ssl/certs/

Já acessou algum site do Governo Brasileiro e teve erro de TLS/SSL? Pois então, os certificados são gerados pelo órgão criado em 2001, voltado para Infraestrutura de Chaves Públicas Brasileira - ICP-Brasil, porém, a CA raiz desta 'autoridade' não está nos sistemas ou navegadores, ou seja, o cliente não confia! O usuário deve baixar a CA raiz e instalar ele próprio em seu S.O. e/ou navegador para acessar sem erros.

Desde 2008, o ITI (Instituto Nacional de Tecnologia da Informação Brasileiro) tenta incluir a AC raiz brasileira na lista de certificados confiáveis do Firefox, a entidade brasileira ainda carece de uma auditoria exigida pela Mozilla, o que justifica a não inclusão do certificado no navegador. Não consegui dados sobre se existe um processo para inseri-los no Google Chrome.

HSTS

Diversos sites para implementar o HTTPS acabam utilizando o redirect nos servidores, isto era correto até 2012, de lá para cá existe o protocolo HSTS, descrito na RFC 6797. Este protocolo facilmente implementado com 1 linha apenas no Apache, Caddy e Nginx

O HTTP Strict Transport Security (HSTS) é um mecanismo de política de segurança que ajuda a proteger sites contra ataques de downgrade de protocolo e sequestro de cookies. A ativação do HSTS declara que os navegadores da WEB devem interagir apenas com o servidor usando uma conexão HTTPS segura e nunca por meio de uma conexão HTTP insegura. A política especifica um período de tempo durante o qual o servidor deve ser acessado de forma segura.

Ao usar o HSTS, o cliente entende que 100% da comunicação com aquele domínio DEVE ser via HTTPS, e o cache no header informa quando ele deve verificar novamente (ou seja, mesmo desativando o HSTS, o cliente continuará a forçar e usar o HTTPS por 1 ano - tempo médio usado na configuração do cache). Ou seja, com o HSTS, para alguém conseguir algum ataque como envenenar cookies, ou outro tipo de man-in-the-middle, precisaria não somente atacar o servidor do site original e desabilita-lo, mas também esperar 1 ano para poder enviar um http para o cliente alvo.

Para validar o HSTS em um site, basta executar o seguinte comando no terminal:

curl -s -D- https://esli-nux.com/ | grep -i Strict
strict-transport-security: max-age=31536000; includeSubDomains; preload

Para habilitar o HSTS no Apache, Nginx e Caddy:

No Apache:

# this domain should only be contacted in HTTPS for the next 6 months
Header add Strict-Transport-Security "max-age=15768000"

Para Nginx, adicione o seguinte parâmetro em seu arquivo de configuração:

add_header Strict-Transport-Security max-age=15768000;

No Caddy, adicione no Caddyfile:

header / Strict-Transport-Security "max-age=31536000;"

Para verificar toda a comunicação, pode-se executar no terminal:

openssl s_client -showcerts -connect esli-nux.com:443

Será obtido a lista de certificados, o detalhamento do handshake (cifra, protocolo, sessão...).

    Próxima página

Páginas do artigo
   1. Introdução
   2. Certificados Auto Assinados
Outros artigos deste autor

DHCP no GNU/Linux - Guia para ISC-DHCP Server

Rootsh - Auditando/monitorando o root e demais usuários do GNU/Linux

Guia SSD no Linux: tudo que você precisa saber e o que precisa esquecer!

Leitura recomendada

Auditando senhas com John The Ripper

Bloqueio de usuários com página de aviso

Configurando logout automático para conta root

Ajustes finos no Bind (servidor DNS)

Nmap - Comandos úteis para um administrador de sistemas Linux

  
Comentários
[1] Comentário enviado por Raz em 07/02/2020 - 13:59h

Muito bom amigo, obrigado..

"A caixa dizia: Requer MS Windows ou superior. Então instalei Linux."

[2] Comentário enviado por vitorhugonalves em 17/02/2020 - 16:00h

Boa tarde,
No dia 06 de fevereiro saiu a notícia sobre a CA do ITI estar disponível nos principais navegadores e SOs.

https://www.iti.gov.br/component/content/article?id=4094

[3] Comentário enviado por Eslih em 17/02/2020 - 19:46h


[2] Comentário enviado por vitorhugonalves em 17/02/2020 - 16:00h

Boa tarde,
No dia 06 de fevereiro saiu a notícia sobre a CA do ITI estar disponível nos principais navegadores e SOs.

https://www.iti.gov.br/component/content/article?id=4094


Show!!!!
Vamos aguardar as atualizações :-)

O legal que o texto inicia com eles assumindo o problemão que levou 18 anos para ser resolvido:
"Será um grande marco para o Brasil e para o ITI. Resolveremos, de uma vez por todas, esse grande problema que tanto atrapalha o acesso dos cidadãos às aplicações online(...)"

Obrigado por compartilhar @vitorhugonalves


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts