Skip to content

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 443

PFX 带密码

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 443

Windows 证书存储

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 80

ALPN 协议说明

组件默认 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 ───→ OpenSSL

InitServerTls 按以下优先级检测证书来源:

  1. 内存集合(Certificates + PrivateKey
  2. 证书文件(CertFile
  3. Windows 证书存储(CertSubject

支持的 TLS 版本

  • TLS 1.2
  • TLS 1.3

证书格式参考

格式扩展名特点密码保护
PKCS#12.pfx .p12二进制,含证书链+私钥支持
PEM.pem .crt .keyBase64 文本,可读私钥可加密
DER.der .cer二进制,单证书不适用

各组件 TLS 文档

组件文档
cHttpServerTLS/HTTPS 支持
cWinsockTLS/SSL 支持
cWebSocketTLS (wss://) 支持

最后更新: 2026-06-09

VB6及其LOGO版权为微软公司所有