tlsconfig

package
v3.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 4, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProtocolHTTP11 = "http/1.1"
	ProtocolHTTP2  = "h2"
	ProtocolHTTP3  = "h3"
)

支持的协议常量

Variables

View Source
var (
	ModernCipherSuites = []string{

		"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305",
		"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
		"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
		"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
		"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
		"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",

		"TLS_AES_128_GCM_SHA256",
		"TLS_CHACHA20_POLY1305_SHA256",
		"TLS_AES_256_GCM_SHA384",
	} // 现代密码套件 (TLS 1.3 + 安全的 TLS 1.2)

	CompatibleCipherSuites = []string{

		"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305",
		"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305",
		"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256",
		"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",

		"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
		"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384",

		"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256",
		"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
		"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",

		"TLS_AES_128_GCM_SHA256",
		"TLS_AES_256_GCM_SHA384",
		"TLS_CHACHA20_POLY1305_SHA256",
	} // 兼容性密码套件 (包含更多旧版本支持)
)

预定义的密码套件组合

View Source
var (
	ModernProtocols     = []string{ProtocolHTTP11, ProtocolHTTP2}                // 现代协议 (HTTP/1.1 + HTTP/2)
	CompatibleProtocols = []string{ProtocolHTTP11}                               // 兼容性协议 (只支持 HTTP/1.1)
	AllProtocols        = []string{ProtocolHTTP11, ProtocolHTTP2, ProtocolHTTP3} // 全协议支持
)

预定义的协议组合

View Source
var CipherSuiteMapping = map[string]uint16{

	"TLS_AES_128_GCM_SHA256":       tls.TLS_AES_128_GCM_SHA256,
	"TLS_AES_256_GCM_SHA384":       tls.TLS_AES_256_GCM_SHA384,
	"TLS_CHACHA20_POLY1305_SHA256": tls.TLS_CHACHA20_POLY1305_SHA256,

	"TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256": tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
	"TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256":   tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
	"TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384": tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
	"TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384":   tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
	"TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305":  tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
	"TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305":    tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,

	"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256": tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,
	"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA":    tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
	"TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA":  tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
	"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA":    tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
	"TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA":  tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,

	"TLS_RSA_WITH_AES_128_GCM_SHA256": tls.TLS_RSA_WITH_AES_128_GCM_SHA256,
	"TLS_RSA_WITH_AES_256_GCM_SHA384": tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
	"TLS_RSA_WITH_AES_128_CBC_SHA":    tls.TLS_RSA_WITH_AES_128_CBC_SHA,
	"TLS_RSA_WITH_AES_256_CBC_SHA":    tls.TLS_RSA_WITH_AES_256_CBC_SHA,
}

CipherSuiteMapping 密码套件映射

View Source
var CurvePreferencesMap = map[string]tls.CurveID{
	"CurveP256":      tls.CurveP256,
	"CurveP384":      tls.CurveP384,
	"CurveP521":      tls.CurveP521,
	"X25519":         tls.X25519,
	"X25519MLKEM768": tls.X25519MLKEM768,
}
View Source
var TLSVersionMapping = map[string]uint16{
	"TLS10": tls.VersionTLS10,
	"TLS11": tls.VersionTLS11,
	"TLS12": tls.VersionTLS12,
	"TLS13": tls.VersionTLS13,
}

TLSVersionMapping TLS版本映射

Functions

func GetAvailableCipherSuites

func GetAvailableCipherSuites() []string

GetAvailableCipherSuites 获取所有可用的密码套件名称

func GetCipherSuiteName

func GetCipherSuiteName(id uint16) string

GetCipherSuiteName 根据 ID 获取密码套件名称

func ParseCipherSuites

func ParseCipherSuites(cipherNames []string) ([]uint16, error)

ParseCipherSuites 将字符串密码套件名称转换为对应的 ID

func ParseTLSVersion

func ParseTLSVersion(version string) (uint16, error)

ParseTLSVersion 解析TLS版本字符串

Types

type Certificate

type Certificate struct {
	CertFile string `json:"cert_file" yaml:"cert_file"`
	KeyFile  string `json:"key_file" yaml:"key_file"`
}

type TLSConfig

type TLSConfig struct {
	Enable       bool          `json:"enable" yaml:"enable"`
	Certificates []Certificate `json:"certificates" yaml:"certificates"` // 证书
	RootCAFile   []string      `json:"root_ca_file" yaml:"root_ca_file"` // 根CA文件
	NextProtos   []string      `json:"next_protos" yaml:"next_protos"`   // 支持的协议
	ServerName   string        `json:"server_name" yaml:"server_name"`   // 服务器名称

	// 0 不验证客户端证书
	// 1 请求客户端证书但不强制验证
	// 2 要求客户端证书但不验证CA
	// 3 如果提供客户端证书则验证
	// 4 要求并验证客户端证书
	ClientAuth                  tls.ClientAuthType       `json:"client_auth" yaml:"client_auth"`                                       // 客户端验证
	ClientCAFile                []string                 `json:"client_ca_file" yaml:"client_ca_file"`                                 // 客户端CA文件
	InsecureSkipVerify          bool                     `json:"insecure_skip_verify" yaml:"insecure_skip_verify"`                     // 跳过验证
	CipherSuites                []string                 `json:"cipher_suites" yaml:"cipher_suites"`                                   // 密钥套件
	CurvePreferences            []string                 `json:"curve_preferences" yaml:"curve_preferences"`                           // 曲线偏好
	SessionTicketsDisabled      bool                     `json:"session_tickets_disabled" yaml:"session_tickets_disabled"`             // 禁用会话密钥
	MinVersion                  string                   `json:"min_version" yaml:"min_version"`                                       // 最低TLS版本
	MaxVersion                  string                   `json:"max_version" yaml:"max_version"`                                       // 最高TLS版本
	DynamicRecordSizingDisabled bool                     `json:"dynamic_record_sizing_disabled" yaml:"dynamic_record_sizing_disabled"` // 动态记录大小禁用
	Renegotiation               tls.RenegotiationSupport `json:"renegotiation" yaml:"renegotiation"`                                   // 重新协商
}

noinspection all

func CompatibleTLSConfig

func CompatibleTLSConfig() *TLSConfig

CompatibleTLSConfig 返回一个兼容性更好的 TLS 配置

func DefaultTLSConfig

func DefaultTLSConfig() *TLSConfig

DefaultTLSConfig 返回一个安全的默认 TLS 配置

func (*TLSConfig) ToTLSConfig

func (t *TLSConfig) ToTLSConfig() (*tls.Config, error)

ToTLSConfig 将配置转换为标准库的 tls.Config

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL