Sobes.tech
Junior — Middle

Come avviene la trasmissione dei certificati durante l'instaurazione di una connessione HTTPS?

sobes.tech AI

Risposta dell'AI

Durante l'instaurazione di una connessione HTTPS, avviene la stretta di mano TLS, durante la quale il server invia il suo certificato al client. Questo certificato contiene la chiave pubblica del server e ne conferma l'autenticità, firmato da un'autorità di certificazione (CA). Il client verifica il certificato assicurandosi che sia valido e che corrisponda al dominio previsto.

In Go, si utilizza il pacchetto crypto/tls per lavorare con HTTPS. Al momento dell'instaurazione della connessione, il server invia automaticamente il suo certificato se configurato in tls.Config.

Esempio di configurazione di un server HTTPS in Go:

package main

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

func main() {
    srv := &http.Server{
        Addr: ":443",
        TLSConfig: &tls.Config{
            // Il certificato e la chiave vengono caricati automaticamente all'avvio del server
        },
    }

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

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

Qui, ListenAndServeTLS carica automaticamente il certificato e la chiave e, durante la stretta di mano TLS, invia il certificato al client.