Как работает TLS в Go?

Senior
424 просмотров
AFK Offer AI

Go имеет полноценную реализацию TLS в стандартной библиотеке crypto/tls, написанную на чистом Go без зависимости от OpenSSL. Для HTTPS-сервера достаточно указать сертификат и ключ.

server := &http.Server{
    Addr: ":443",
    TLSConfig: &tls.Config{
        MinVersion: tls.VersionTLS12,
    },
}
server.ListenAndServeTLS("cert.pem", "key.pem")

Для автоматического получения сертификатов от Let's Encrypt используй autocert:

m := &autocert.Manager{
    Cache:      autocert.DirCache("certs"),
    Prompt:     autocert.AcceptTOS,
    HostPolicy: autocert.HostWhitelist("example.com"),
}
server.TLSConfig = m.TLSConfig()

Важно: всегда устанавливай MinVersion TLS 1.2, TLS 1.0/1.1 давно небезопасны. Go реализация TLS хорошо оптимизирована и на современных CPU с AES-NI работает без заметного оверхеда. Для mutual TLS (mTLS) настраиваешь ClientCAs и ClientAuth в tls.Config.

Следующий вопрос

Что такое data partitioning?