TLS 证书配置总览
概述
vbmanlib 的所有网络组件(cHttpServer、cWinsock、cWebSocketServer/Client)共享统一的 TLS 证书配置接口,通过链式函数风格调用,支持三种证书来源:
| 证书模式 | 链式函数 | 适用场景 | 详见 |
|---|---|---|---|
| 证书文件 | TlsCertFile() | 最常用,生产部署,PFX/PEM 文件 | 证书文件模式 |
| Windows 证书存储 | TlsCertSubject() | 企业环境,IIS 共享证书,AD 证书 | Windows 证书存储模式 |
| 内存证书集合 | TlsCertMemory() | 动态生成,ACME 签发,嵌入式证书 | 内存证书集合模式 |
快速选择
我该用哪种证书模式?
│
├─ 有 .pfx / .p12 / .pem 文件?
│ └─ ✅ TlsCertFile(最简单,推荐)
│
├─ 证书已安装在 Windows 系统(IIS 共用)?
│ └─ ✅ TlsCertSubject
│
├─ 需要程序运行时动态生成/加载证书?
│ └─ ✅ TlsCertMemory
│
└─ 只需连接 TLS 服务器(客户端角色)?
└─ ✅ cWinsock.Tls()(无需本地证书)通用链式函数签名
各组件的 TLS 链式函数名称和参数完全一致,仅返回类型不同:
PEM 证书(Let's Encrypt)
vb
' ─── cHttpServer ───
Server.TlsCertFile("C:\certs\fullchain.pem|C:\certs\privkey.pem").WebRoot("C:\www").Start 443
' ─── cWinsock(服务端) ───
svr.TlsCertFile("C:\certs\fullchain.pem|C:\certs\privkey.pem").Listen 443
' ─── cWebSocketServer ───
wsSvr.TlsCertFile("C:\certs\fullchain.pem|C:\certs\privkey.pem").Listen 443PFX 带密码
vb
' ─── cHttpServer ───
Server.TlsCertFile("C:\certs\server.pfx", "my-password").WebRoot("C:\www").Start 443
' ─── cWinsock(服务端) ───
svr.TlsCertFile("C:\certs\server.pfx", "my-password").Listen 443
' ─── cWebSocketServer ───
wsSvr.TlsCertFile("C:\certs\server.pfx", "my-password").Listen 443Windows 证书存储
vb
' ─── cHttpServer ───
Server.TlsCertSubject("www.example.com").Start 443
' ─── cWinsock(服务端) ───
svr.TlsCertSubject("www.example.com").Listen 443
' ─── cWebSocketServer ───
wsSvr.TlsCertSubject("www.example.com").Listen 443客户端模式(无需本地证书)
vb
' ─── cWinsock(客户端) ───
cli.Tls.Connect "example.com", 443
' ─── cWebSocketClient(wss:// 自动启用 TLS) ───
wsCli.Connect "wss://example.com/ws"HTTP + HTTPS 双端口
vb
Dim httpSvr As New cHttpServer
httpSvr.WebRoot("C:\www").Start 80
Dim httpsSvr As New cHttpServer
httpsSvr.TlsCertFile("C:\certs\server.pfx", "pwd").WebRoot("C:\www").Start 443纯 HTTP(不调用任何 Tls 函数)
vb
Server.WebRoot("C:\www").Start 80ALPN 协议说明
| 组件 | 默认 AlpnProtocols | 说明 |
|---|---|---|
| cHttpServer | "http/1.1" | 如需 HTTP/2 设为 "h2,http/1.1" |
| cWinsock | "http/1.1" | 可根据应用协议自定义 |
| cWebSocketServer | ""(空) | WebSocket 有自己的升级机制,通常不需要 ALPN |
底层实现
所有组件最终通过 cTlsSocket(基于 OpenSSL)实现 TLS:
cHttpServer ───→ cTlsReMaster ───→ cTlsSocket ───→ OpenSSL
cWinsock ─────────────────→ cTlsSocket ───→ OpenSSL
cWebSocket ───→ cWinsock ───→ cTlsSocket ───→ OpenSSLInitServerTls 按以下优先级检测证书来源:
- 内存集合(
Certificates+PrivateKey) - 证书文件(
CertFile) - Windows 证书存储(
CertSubject)
支持的 TLS 版本
- TLS 1.2
- TLS 1.3
证书格式参考
| 格式 | 扩展名 | 特点 | 密码保护 |
|---|---|---|---|
| PKCS#12 | .pfx .p12 | 二进制,含证书链+私钥 | 支持 |
| PEM | .pem .crt .key | Base64 文本,可读 | 私钥可加密 |
| DER | .der .cer | 二进制,单证书 | 不适用 |
各组件 TLS 文档
| 组件 | 文档 |
|---|---|
| cHttpServer | TLS/HTTPS 支持 |
| cWinsock | TLS/SSL 支持 |
| cWebSocket | TLS (wss://) 支持 |
最后更新: 2026-06-09