通过域名连接
默认情况下,服务器使用自签名证书且访问密钥直连 IP 地址。绑定自定义域名并配置受信任的 CA 证书后,所有连接将伪装成常规网站访问,隐蔽性更强。
绑定域名的优势
配置后生成的访问密钥将包含该域名。客户端连接时会解析域名并像浏览器一样校验服务器证书。即使服务器更换 IP 地址,只需更新域名解析,现有密钥即可继续使用。
访问密钥中依然保留服务器的 IP 地址。若客户端暂时无法解析域名,会自动回退通过 IP 正常连接。
准备工作
- 一个由您控制的域名或子域名,例如
vpn.example.com。请使用具体域名,不支持泛域名。 - 将域名解析到服务器连接 IP 的 DNS 记录:配置 A 记录,若服务器支持 IPv6 则同时配置 AAAA 记录。必须直接解析到服务器,切勿开启 CDN 代理。
- 若使用托管服务器,在使用该域名期间须始终开放 TCP 端口
80:用于初次签发及后续每隔数月的证书自动续期验证。
在托管服务器上配置
- 在 VpnHood! MANAGER 中,依次打开 Server Farms 与目标集群。在 SSL / TLS Certificates 下点击 Add,在 Domain Name 中输入域名并选择 Create。MANAGER 会为其创建自签名证书并打开详情页。
- 编辑 Signing 并选择 AutoSign。MANAGER 将向 Let's Encrypt 申请证书,并通过服务器的 TCP 端口
80验证域名。完成后,Signature 将显示为 CA Signed,且 MANAGER 会在证书到期前自动续期。 - 随后编辑 Visibility 并选择 PublicInToken。该集群的所有密钥将自动包含此域名,集群原有的证书状态将变为 Public。
此后从 MANAGER 复制的新密钥都将包含该域名。由于 Push token to clients 默认开启,使用旧密钥的应用在连接时会自动同步新配置。在此之前请保留旧证书,否则旧密钥将无法连接。
若验证失败,Signing 会显示失败原因,多次重试失败后将自动切回 Manual。修复 DNS 记录或开放对应端口后,重新选择 AutoSign 即可。
如需确认配置,打开集群详情:在 Access Points 列表中,该域名将排在首位。
单个服务器页面也有 SSL / TLS Certificates 列表。此处的证书仅对该单台服务器生效;若要将域名写入客户端密钥,请务必在集群层级添加。
在独立服务器上配置
独立服务器无法自动获取证书。请从证书颁发机构获取域名的 PFX 格式证书(包含私钥),并将其重命名为 /opt/VpnHoodServer/storage/access/certificates/default.pfx 替换原文件。
接着在 /opt/VpnHoodServer/storage/appsettings.json 的 FileAccessManager 下,将证书密码填入 SslCertificatesPassword,并将 IsValidHostName 设为 true。新安装的环境中若无此文件,直接创建即可,之后服务器将优先使用该配置。
完整配置文件内容,请将示例密码替换为您证书的实际密码
{
"FileAccessManager": {
"SslCertificatesPassword": "your-pfx-password",
"IsValidHostName": true
},
"ServerConfig": {
"LogAnonymizer": true,
"AddListenerIpsToNetwork": "*"
},
"LogLevel": "Information"
}
服务器会自动从证书中读取域名,因此无需单独配置。
使用 sudo systemctl restart VpnHoodServer 重启服务器,Docker 环境下则运行 sudo docker restart VpnHoodServer。若密码错误,服务器将无法启动,并在日志中显示 The server could not start.。
变更前生成的密钥因绑定旧证书将失效。请重新打印各密钥并发送给用户,原有的配置选项和使用记录均会保留。密钥 ID 即为其在 /opt/VpnHoodServer/storage/access 中的文件名(不含 .token2 后缀)。
列出所有密钥,并根据 ID 重新打印指定密钥
sudo ls /opt/VpnHoodServer/storage/access
sudo /opt/VpnHoodServer/vhserver print 2b9d4a6e-1c3f-4e8a-9b7d-5f0e8c2a1d34
在 Docker 中,可通过 sudo docker exec VpnHoodServer /app/vhsupervisor 运行相同命令,操作与 vhserver gen 一致。
新密钥直接关联域名,不再依赖具体证书文件。后续证书续期时,密钥依然有效,只需替换新证书并重启服务器即可。