Documentation
¶
Overview ¶
Package tls 提供 TLS 证书管理和加密工具,用于 enhance 框架。
该模块提供 TLS 配置、HTTPS 客户端、AES/RSA 加密解密等安全通信和加密功能。 适用于需要安全通信和数据加密的场景。
架构设计 ¶
- TLSConfig: TLS 配置管理器,负责证书和密钥管理
- HTTPSServer: HTTPS 服务器,支持 TLS 通信
- AESCipher: AES 加密解密器
- RSACipher: RSA 加密解密器
- CertificateManager: 证书管理器
核心功能 ¶
- TLS 配置: 支持 TLS 1.2/1.3 协议配置
- 证书管理: 支持证书加载、验证、更新
- AES 加密: 支持 AES-128/256 对称加密
- RSA 加密: 支持 RSA 非对称加密
- HTTPS 客户端: 支持 HTTPS 请求,验证服务器证书
使用方式 ¶
TLS 配置:
cfg := tls.NewTLSConfig()
cfg.SetCertificate("/path/to/cert.pem", "/path/to/key.pem")
cfg.SetMinVersion(tls.VersionTLS12)
AES 加密:
cipher := tls.NewAESCipher(key) encrypted, err := cipher.Encrypt(plaintext) decrypted, err := cipher.Decrypt(encrypted)
RSA 加密:
cipher := tls.NewRSACipher(publicKey) encrypted, err := cipher.Encrypt(plaintext)
支持的加密算法 ¶
- AES-128-CBC: AES 128 位 CBC 模式
- AES-256-CBC: AES 256 位 CBC 模式
- AES-128-GCM: AES 128 位 GCM 模式
- AES-256-GCM: AES 256 位 GCM 模式
- RSA-2048: RSA 2048 位密钥
- RSA-4096: RSA 4096 位密钥
Index ¶
- func AESDecrypt(ciphertext, key, iv []byte) ([]byte, error)
- func AESEncrypt(plaintext, key, iv []byte) ([]byte, error)
- func AESGCMDecrypt(ciphertext, key, additionalData []byte) ([]byte, error)
- func AESGCMEncrypt(plaintext, key, additionalData []byte) ([]byte, error)
- func InsecureTLSConfig() *tls.Config
- func LoadCertFromPEM(certPEM, keyPEM []byte) (*tls.Config, error)
- func LoadClientTLSConfig(caFile string) (*tls.Config, error)
- func LoadTLSConfig(certFile, keyFile string) (*tls.Config, error)
- func LoadTLSConfigWithCA(certFile, keyFile, caFile string) (*tls.Config, error)
- func MarshalRSAPrivateKey(privateKey *rsa.PrivateKey) []byte
- func MarshalRSAPublicKey(publicKey *rsa.PublicKey) ([]byte, error)
- func MustLoadTLSConfig(certFile, keyFile string) *tls.Config
- func NewClient(baseURL string, opts ...ClientOption) *server.NetClient
- func ParseRSAPrivateKey(pemData []byte) (*rsa.PrivateKey, error)
- func ParseRSAPublicKey(pemData []byte) (*rsa.PublicKey, error)
- func RSADecrypt(privateKey *rsa.PrivateKey, ciphertext []byte) ([]byte, error)
- func RSAEncrypt(publicKey *rsa.PublicKey, plaintext []byte) ([]byte, error)
- func RSAGenerateKey(bits int) (*rsa.PrivateKey, error)
- func RSASign(privateKey *rsa.PrivateKey, data []byte) ([]byte, error)
- func RSAVerify(publicKey *rsa.PublicKey, data, signature []byte) error
- type ClientBuilder
- type ClientOption
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AESDecrypt ¶
AESDecrypt 使用 AES-CBC 模式解密数据。
参数:
- ciphertext: 密文数据
- key: 密钥(需与加密时一致)
- iv: 初始向量(需与加密时一致)
返回值:
- []byte: 明文数据
- error: 解密错误
func AESEncrypt ¶
AESEncrypt 使用 AES-CBC 模式加密数据。
参数:
- plaintext: 明文数据
- key: 密钥(16/24/32 字节对应 AES-128/AES-192/AES-256)
- iv: 初始向量(16 字节)
返回值:
- []byte: 密文数据
- error: 加密错误
func AESGCMDecrypt ¶
AESGCMDecrypt 使用 AES-GCM 模式解密数据。
参数:
- ciphertext: nonce + 密文 + tag(AESGCMEncrypt 的输出格式)
- key: 密钥(需与加密时一致)
- additionalData: 附加认证数据(需与加密时一致)
返回值:
- []byte: 明文数据
- error: 解密错误
func AESGCMEncrypt ¶
AESGCMEncrypt 使用 AES-GCM 模式加密数据(推荐,自带认证)。
参数:
- plaintext: 明文数据
- key: 密钥(16/24/32 字节)
- additionalData: 附加认证数据(可选)
返回值:
- []byte: nonce + 密文 + tag(拼接格式)
- error: 加密错误
func InsecureTLSConfig ¶
InsecureTLSConfig 创建跳过证书验证的 TLS 配置(仅用于开发测试)。
返回值:
- *tls.Config: 不安全但可用的 TLS 配置
func LoadCertFromPEM ¶
LoadCertFromPEM 从 PEM 编码的字节数据解析 TLS 证书对。
参数:
- certPEM: PEM 格式的证书数据
- keyPEM: PEM 格式的私钥数据
返回值:
- *tls.Config: TLS 配置
- error: 解析错误
func LoadClientTLSConfig ¶
LoadClientTLSConfig 加载仅客户端验证用的 TLS 配置(不需要服务端证书)。
参数:
- caFile: PEM 格式的 CA 证书文件路径,用于验证服务端证书
返回值:
- *tls.Config: TLS 配置
- error: 加载错误
func LoadTLSConfig ¶
LoadTLSConfig 从证书文件和密钥文件加载 TLS 配置。
参数:
- certFile: PEM 格式的证书文件路径
- keyFile: PEM 格式的私钥文件路径
返回值:
- *tls.Config: TLS 配置
- error: 加载错误
示例:
tlsCfg, err := tls.LoadTLSConfig("server.crt", "server.key")
if err != nil {
log.Fatal(err)
}
func LoadTLSConfigWithCA ¶
LoadTLSConfigWithCA 加载 TLS 配置并启用 CA 证书验证(用于客户端验证服务端)。
参数:
- certFile: PEM 格式的证书文件路径
- keyFile: PEM 格式的私钥文件路径
- caFile: PEM 格式的 CA 证书文件路径
返回值:
- *tls.Config: TLS 配置
- error: 加载错误
func MarshalRSAPrivateKey ¶
func MarshalRSAPrivateKey(privateKey *rsa.PrivateKey) []byte
MarshalRSAPrivateKey 将 RSA 私钥编码为 PEM 格式。
func MarshalRSAPublicKey ¶
MarshalRSAPublicKey 将 RSA 公钥编码为 PEM 格式。
func MustLoadTLSConfig ¶
MustLoadTLSConfig 加载 TLS 配置,失败时 panic。
参数:
- certFile: PEM 格式的证书文件路径
- keyFile: PEM 格式的私钥文件路径
返回值:
- *tls.Config: TLS 配置
func NewClient ¶
func NewClient(baseURL string, opts ...ClientOption) *server.NetClient
NewClient 创建 HTTPS 客户端构建器。
参数:
- baseURL: 基础 URL,如 "https://example.com"
- opts: 可选配置选项
返回值:
- *server.NetClient: 配置好的 HTTPS 客户端实例
示例:
client := https.NewClient("https://api.example.com",
https.WithInsecureTLS(),
https.WithTimeout(30*time.Second),
)
resp, err := client.Get(ctx, "/api/users")
func ParseRSAPrivateKey ¶
func ParseRSAPrivateKey(pemData []byte) (*rsa.PrivateKey, error)
ParseRSAPrivateKey 从 PEM 数据解析 RSA 私钥。
func ParseRSAPublicKey ¶
ParseRSAPublicKey 从 PEM 数据解析 RSA 公钥。
func RSADecrypt ¶
func RSADecrypt(privateKey *rsa.PrivateKey, ciphertext []byte) ([]byte, error)
RSADecrypt 使用 RSA 私钥解密数据(OAEP-SHA256)。
参数:
- privateKey: RSA 私钥
- ciphertext: 密文数据
返回值:
- []byte: 明文数据
- error: 解密错误
func RSAEncrypt ¶
RSAEncrypt 使用 RSA 公钥加密数据(OAEP-SHA256)。
参数:
- publicKey: RSA 公钥
- plaintext: 明文数据
返回值:
- []byte: 密文数据
- error: 加密错误
func RSAGenerateKey ¶
func RSAGenerateKey(bits int) (*rsa.PrivateKey, error)
RSAGenerateKey 生成 RSA 密钥对。
参数:
- bits: 密钥位数(建议 2048 或 4096)
返回值:
- *rsa.PrivateKey: 私钥
- error: 生成错误
Types ¶
type ClientBuilder ¶
type ClientBuilder struct {
// contains filtered or unexported fields
}
ClientBuilder 是 HTTPS 客户端构建器,封装 server.NetClient 并配置 TLS。
字段说明:
- baseURL: 基础 URL(应以 https:// 开头)
- tlsConfig: TLS 配置
- timeout: 请求超时时间
- transport: 自定义 HTTP Transport
- headers: 默认请求头
type ClientOption ¶
type ClientOption func(*ClientBuilder)
ClientOption 是 HTTPS 客户端配置选项。
func WithDefaultHeader ¶
func WithDefaultHeader(key, value string) ClientOption
WithDefaultHeader 设置默认请求头。
参数:
- key: 请求头名称
- value: 请求头值
返回值:
- ClientOption: 客户端配置选项
func WithInsecureTLS ¶
func WithInsecureTLS() ClientOption
WithInsecureTLS 跳过 TLS 证书验证(仅用于开发测试)。
返回值:
- ClientOption: 客户端配置选项
func WithTLSConfig ¶
func WithTLSConfig(tlsConfig *tls.Config) ClientOption
WithTLSConfig 设置 TLS 配置。
参数:
- tlsConfig: TLS 配置
返回值:
- ClientOption: 客户端配置选项
func WithTimeout ¶
func WithTimeout(timeout time.Duration) ClientOption
WithTimeout 设置请求超时时间。
参数:
- timeout: 超时时间
返回值:
- ClientOption: 客户端配置选项
func WithTransport ¶
func WithTransport(transport *http.Transport) ClientOption
WithTransport 设置自定义 HTTP Transport。
参数:
- transport: HTTP Transport
返回值:
- ClientOption: 客户端配置选项