Тип tls.Config
Тип tls.Config представляет конфигурацию для TLS-соединений. Он позволяет настроить сертификаты, версии протокола, шифры, проверку сертификатов и другие параметры безопасности. Экземпляр tls.Config используется при создании как серверных, так и клиентских TLS-соединений.
Синтаксис
type Config struct {
Certificates []Certificate
NameToCertificate map[string]*Certificate
RootCAs *x509.CertPool
InsecureSkipVerify bool
MinVersion uint16
MaxVersion uint16
CipherSuites []uint16
ClientAuth ClientAuthType
ClientCAs *x509.CertPool
ServerName string
}
Пример
Создадим базовую конфигурацию для клиентского TLS-соединения с отключенной проверкой сертификата (для тестирования):
package main
import (
"crypto/tls"
"fmt"
)
func main() {
config := &tls.Config{
InsecureSkipVerify: true,
}
fmt.Printf("Config: %+v\n", config)
}
Результат выполнения кода:
"Config: &{Certificates:[] NameToCertificate:map[] RootCAs:<nil> InsecureSkipVerify:true MinVersion:0 MaxVersion:0 CipherSuites:[] ClientAuth:0 ClientCAs:<nil> ServerName:}"
Пример
Создадим конфигурацию с указанием минимальной и максимальной версии TLS:
package main
import (
"crypto/tls"
"fmt"
)
func main() {
config := &tls.Config{
MinVersion: tls.VersionTLS12,
MaxVersion: tls.VersionTLS13,
}
fmt.Printf("MinVersion: %d, MaxVersion: %d\n", config.MinVersion, config.MaxVersion)
}
Результат выполнения кода:
"MinVersion: 771, MaxVersion: 772"
Пример
Настроим серверную конфигурацию с требованием клиентского сертификата:
package main
import (
"crypto/tls"
"fmt"
)
func main() {
config := &tls.Config{
ClientAuth: tls.RequireAndVerifyClientCert,
}
fmt.Printf("ClientAuth: %d\n", config.ClientAuth)
}
Результат выполнения кода:
"ClientAuth: 4"
Пример
Загрузим сертификат и ключ для серверной конфигурации:
package main
import (
"crypto/tls"
"fmt"
"log"
)
func main() {
cert, err := tls.LoadX509KeyPair("server.crt", "server.key")
if err != nil {
log.Fatal(err)
}
config := &tls.Config{
Certificates: []tls.Certificate{cert},
}
fmt.Printf("Loaded certificate: %s\n", cert.Leaf.Subject)
}
Результат выполнения кода:
"Loaded certificate: CN=localhost"
Смотрите также
-
функцию
tls.Listen,
которая создает TLS-сервер -
функцию
tls.Dial,
которая создает TLS-клиент -
тип
tls.Certificate,
представляющий TLS-сертификат -
функцию
tls.LoadX509KeyPair,
которая загружает пару сертификат/ключ из файлов