Sobes.tech
Junior — Middle

Como é feita a transmissão de certificados durante o estabelecimento de uma conexão HTTPS?

sobes.tech IA

Resposta da IA

Durante o estabelecimento de uma ligação HTTPS, ocorre um aperto de mão TLS, durante o qual o servidor envia o seu certificado ao cliente. Este certificado contém a chave pública do servidor e confirma a sua autenticidade, assinada por uma autoridade de certificação (CA). O cliente verifica o certificado para garantir que é válido e corresponde ao domínio esperado.

Em Go, utiliza-se o pacote crypto/tls para trabalhar com HTTPS. Ao estabelecer a ligação, o servidor envia automaticamente o seu certificado se estiver configurado em tls.Config.

Exemplo de configuração de um servidor HTTPS em Go:

package main

import (
    "crypto/tls"
    "log"
    "net/http"
)

func main() {
    srv := &http.Server{
        Addr: ":443",
        TLSConfig: &tls.Config{
            // O certificado e a chave são carregados automaticamente ao iniciar o servidor
        },
    }

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("Hello HTTPS"))
    })

    log.Fatal(srv.ListenAndServeTLS("server.crt", "server.key"))
}

Aqui, ListenAndServeTLS carrega automaticamente o certificado e a chave e, durante o aperto de mão TLS, envia o certificado ao cliente.