HTTPS
Definição
HTTPS (Hypertext Transfer Protocol Secure) é a versão segura do protocolo HTTP.
Ele utiliza a combinação do HTTP com protocolos de segurança baseados em criptografia, principalmente o TLS (Transport Layer Security), para proteger a comunicação entre navegadores e servidores.
Com o HTTPS:
- Os dados transmitidos são criptografados, impedindo que sejam lidos ou alterados por terceiros durante o trajeto.
- A identidade do servidor pode ser verificada por meio de certificados digitais emitidos por Autoridades Certificadoras (CAs).
HTTPS é essencial para proteger informações sensíveis como senhas, dados bancários e informações pessoais.
Objetivos do HTTPS
- Confidencialidade: proteger os dados contra interceptação durante a transmissão.
- Integridade: garantir que os dados não sejam alterados sem detecção.
- Autenticação: assegurar que o servidor acessado é o verdadeiro destinatário.
- Confiabilidade: transmitir confiança aos usuários por meio do cadeado exibido nos navegadores.
Exemplo prático (Python) — Verificar certificado HTTPS de um site
import ssl
import socket
def verificar_certificado_https(hostname):
contexto = ssl.create_default_context()
with socket.create_connection((hostname, 443)) as sock:
with contexto.wrap_socket(sock, server_hostname=hostname) as ssock:
certificado = ssock.getpeercert()
print("Certificado obtido para:", hostname)
print("Assunto:", certificado['subject'])
print("Emissor:", certificado['issuer'])
# Exemplo de uso
verificar_certificado_https('www.programicio.com')
Saída
(Exemplo simplificado, dependendo do site e do certificado.)
Certificado obtido para: www.programicio.com
Assunto: ((('commonName', 'www.programicio.com'),),)
Emissor: ((('organizationName', 'Let's Encrypt'),),)
(O certificado valida a identidade do servidor e protege as comunicações.)
O ciclo do HTTPS
[Navegador inicia conexão] --> (Negociação de TLS e verificação do certificado) --> (Comunicação segura HTTPS)
Antes de transmitir dados, o navegador valida o certificado do servidor.
A comunicação passa a ser criptografada ponta a ponta.