Oi Edumelo97, tudo bem?
Em relação à sua primeira pergunta, sim, durante a comunicação HTTPS, o cliente lê o certificado digital do domínio e obtém a chave pública correspondente. Essa chave é usada para criptografar a requisição que será enviada ao servidor, garantindo que apenas o servidor possa descriptografá-la usando sua chave privada correspondente.
Quando o servidor recebe a requisição criptografada, ele usa sua chave privada para descriptografá-la e obter as informações contidas nela. Em seguida, o servidor pode encaminhar a resposta de volta ao cliente usando a mesma chave simétrica que foi gerada durante o processo de "handshake" SSL/TLS.
Quanto à sua segunda pergunta, a chave simétrica é gerada de forma dinâmica para cada conexão HTTPS, o que significa que uma nova chave simétrica é gerada toda vez que uma conexão é estabelecida. Essa chave é usada apenas para a duração da sessão, ou seja, enquanto a conexão estiver ativa. Quando a conexão é encerrada, a chave simétrica também é descartada e uma nova chave será gerada na próxima vez que a conexão for estabelecida.
Para ilustrar um pouco melhor esse processo, aqui vai um exemplo básico de como uma comunicação HTTPS pode ocorrer em código:
# Biblioteca para requisições HTTP/HTTPS
import requests
# URL de exemplo com HTTPS
url = "https://www.exemplo.com/"
# Faz a requisição HTTPS
response = requests.get(url)
# Imprime o conteúdo da resposta
print(response.content)
Nesse exemplo, a biblioteca requests
é usada para fazer uma requisição HTTPS para o site www.exemplo.com. Durante o processo de estabelecimento da conexão HTTPS, o cliente (neste caso, a biblioteca requests
) lerá o certificado digital do domínio www.exemplo.com e obterá a chave pública correspondente.
Em seguida, a biblioteca requests
usará essa chave pública para criptografar a requisição que será enviada ao servidor, garantindo a confidencialidade dos dados. Quando o servidor receber a requisição, ele usará sua chave privada para descriptografá-la e obter as informações contidas nela.
Por fim, o servidor usará uma chave simétrica para criptografar a resposta que será enviada de volta ao cliente. Essa chave simétrica é gerada dinamicamente para cada conexão HTTPS e será descartada quando a conexão for encerrada.
Espero que essa explicação tenha sido útil para você entender melhor como funciona o Certificado HTTPS.
Um abraço e bons estudos.