我正在尝试将 let's encrypt 证书附加到我的 softether vpn 服务器,但没有找到方法。我们可以在 vpn 服务器中使用 CA 签名的证书(如 let's encrypt)吗?如果可以,请提供流程。
答案1
在 VPN 服务器上使用 Let's Encrypt 证书的主要挑战是其有效期非常短,只有 3 个月。这意味着有一些先决条件:
- 一旦 Certbot 更新了证书和私钥,您必须能够自动加载它们。幸运的是,Softether 有一个命令行管理实用程序. 你应该至少熟悉6.2 一般用法
vpncmd
为了理解这个答案中的步骤1和3。 - VPN 服务器需要在 HTTP 端口 80 上公开访问,以便HTTP-01 挑战。此外,Softether VPN 服务器没有内置 HTTP-01 验证,因此需要外部 Certbot。
脚步:
您应该将 Let's Encrypt 添加为 VPN 客户端的受信任的 CA。
您可以从中找到当前有效的中级证书信任链页。
该命令是
CertAdd [path]
,来自6.5.6 "CertAdd":添加受信任的CA证书。这一步可能也可以通过 GUI 实现,但我不是 GUI 人员。:)
安装并配置 Certbot:根据你的网络服务器和系统给出的说明。
创建一个脚本/任务/cronjob,定期更新证书和密钥。
Certbot 会更新所有将在一个月内到期的证书。因此,旧证书最多还有一个月才会到期,但为了尽量减少失败的可能性,我建议每周至少运行一次此脚本。
该命令来自6.3.20 “ServerCertSet”:设置 VPN 服务器的 SSL 证书和私钥, 是:
ServerCertSet [/LOADCERT:cert] [/LOADKEY:key]
/LOADCERT
指定要使用的X.509格式的证书文件。/LOADKEY
指定证书要使用的 Base 64 编码的私钥文件。例如,对于 Debian Linux,命令可能是:
vpncmd /server localhost /password:password /adminhub:DEFAULT /cmd ServerCertSet \ /LOADCERT:/etc/letsencrypt/live/vpn.example.com/cert.pem \ /LOADKEY:/etc/letsencrypt/live/vpn.example.com/privkey.pem
答案2
对于 letsencrypt 质询,VPN 服务器无需在端口 80 上公开访问。您可以使用 --preferred-challenges DNS 选项,并为您的主机创建 DNS txt 记录。
例如:certbot certonly -d yourhost.your.domain --manual --preferred-challenges dns
这将提示你创建新的 dns txt 记录
请在名称 _acme-challenge.yourhost.your.domain 下部署具有以下值的 DNS TXT 记录:
一些随机生成的密钥
继续之前,请验证记录是否已部署。