Sobes.tech
Junior — Middle

¿Cómo se realiza la transmisión de certificados durante el establecimiento de una conexión HTTPS?

sobes.tech AI

Respuesta de la IA

Durante el establecimiento de una conexión HTTPS, se realiza un apretón de manos TLS, en el cual el servidor envía su certificado al cliente. Este certificado contiene la clave pública del servidor y confirma su autenticidad, firmada por una autoridad de certificación (CA). El cliente verifica el certificado asegurándose de que sea válido y que corresponda al dominio esperado.

En Go, se utiliza el paquete crypto/tls para trabajar con HTTPS. Al establecer la conexión, el servidor envía automáticamente su certificado si está configurado en tls.Config.

Ejemplo de configuración de un servidor HTTPS en Go:

package main

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

func main() {
    srv := &http.Server{
        Addr: ":443",
        TLSConfig: &tls.Config{
            // El certificado y la clave se cargan automáticamente al iniciar el servidor
        },
    }

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

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

Aquí, ListenAndServeTLS carga automáticamente el certificado y la clave y, durante el apretón de manos TLS, envía el certificado al cliente.