BuyPass免费SSL证书申请与使用教程-acme.sh自动申请和续期SSL证书
BuyPass曾提供 Go SSL 免费证书,当时签发的证书有效期约半年。Buypass 在 2025 年 10 月结束这类 TLS/SSL 证书的申请和续期,10 月 31 日是最后签发日,ACME 也一并停用。官方公告:https://www.buypass.com/products/tls-ssl-certificates/discontinues-issuance-of-tls-ssl-certificates 。
BuyPass免费SSL证书以前支持 acme.sh,当时安装 acme.sh 就可以为域名申请BuyPass免费SSL证书,并自动续期。本文保留当时的申请和安装步骤,方便对照旧配置。现在想继续用免费SSL证书,可以用 Let’s Encrypt 重新签发,具体看第四节。

更多的免费SSL还有:
- ZeroSSL免费SSL证书申请与使用-支持自动续期和免费泛域名SSL证书
- 简单三步给网站申请安装letsencrypt免费SSL证书-acme.sh自动续期
- 免费SSL证书收集整理汇总-免费给网站添加Https安全加密访问
PS:2026年11月4日更新,补记 Buypass 停发和停止续期的时间,保留旧申请记录,并补上用 acme.sh 更换证书的步骤。
一、集成现有面板申请
网站:
- https://www.buypass.com

下面的面板截图是 Buypass 停发前的界面。当时例如我们经常用的LNMP一键安装包就有 BuyPass 选项。现在如果菜单里还有旧选项,申请新证书时请选择仍在签发的 CA。

如果你的面板或者脚本已经集成了acme.sh,但是颁发出来的不是BuyPass免费SSL证书,可以使用以下命令切换一下CA:
bash /root/.acme.sh/acme.sh --set-default-ca --server buypass
二、acme.sh申请BuyPass
本节保留 Buypass 停发前的命令和截图,旧命令供查找配置时对照。需要换证的朋友可直接看第四节。
网站:
- https://github.com/acmesh-official/acme.sh
- acme.sh详细教程:acme.sh支持免费SSL证书整理汇总-acme.sh安装和手动切换SSL CA方法
首先是在VPS主机上安装acme.sh脚本:
curl https://get.acme.sh | sh -s email=freehao123@gmail.com
脚本自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书. 安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/
2.1 切换CA
最新版本的acme.sh 默认签发的是ZeroSSL证书,你需要使用以下命令将acme.sh 默认签发证书的CA切换为BuyPass。
bash /root/.acme.sh/acme.sh --set-default-ca --server buypass
2.2 Web验证
如果你的VPS主机上已经安装了Nginx或者Apache,可以用域名正常访问的话,可以选择使用Web验证的方式(注意替换你的网站的根目录):
acme.sh --issue -d wzfou.com -d www.wzfou.com --webroot /home/wwwroot/wzfou.com #或者 acme.sh --issue -d xxx.wzfou.com --webroot /home/wwwroot/xxx.wzfou.me

如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:
acme.sh --issue -d wzfou.com --standalone
2.3 DNS验证
如果Web验证不成功的话,可以使用DNS验证的方式。有两种方式:
一种是手动添加DNS记录。这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。
acme.sh --issue --dns -d mydomain.com \ --yes-I-know-dns-manual-mode-enough-go-ahead-please
然后, acme.sh 会生成相应的解析记录显示出来, 你只需要在你的域名管理面板中添加这条 txt 记录即可。等待解析完成之后, 重新生成证书(注意第二次这里用的是 --renew):
acme.sh --renew -d mydomain.com \ --yes-I-know-dns-manual-mode-enough-go-ahead-please
另一种是DNS API自动添加 txt 记录完成验证。这种方式除了达到了DNS验证域名的所有优点外,还是完全自动的,支持自动续期。acme.sh目前已经支持市面上绝大多数的DNS服务商了,只要DNS商提供了API就可以使用。
以CloudFlare为例,先到CloudFlare官网找到你的API。CloudFlare提供了两种API:一种是全局API,这个API权限非常大,直接就拥有账户的所有权限。执行以下命令可以将API导入到acme.sh。

导入命令如下:
export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje" export CF_Email="freehao123@gmail.com"
另一种是专门的API,即你可以创建限制权限的API,例如仅用于修改编辑DNS的API,这样的API安全性会相对高一些。

CloudFlare专门的API导入命令如下:
export CF_Token="sdfsdfsdfljlbjkljlkjsdfoiwje" export CF_Account_ID="xxxxxxxxxxxxx"
最后,就是使用CloudFlare DNS验证的方式来完成当时的 Buypass 证书的签发了。
acme.sh --issue --dns dns_cf -d wzfou.com -d www.wzfou.com
以DNSPOD.cn为例,先找到DNSPOD.cn的API。

然后使用以下命令将DNSPOD.cn的API导入到acme.sh。
export DP_Id="1234" export DP_Key="sADDsdasdgdsf"
最后使用DNSPOD.cn的DNS验证方式完成当时的 Buypass 证书的签发。
acme.sh --issue --dns dns_dp -d wzfou.com -d www.wzfou.com
导入的DNS API存放在~/.acme.sh/account.conf 下次再次签发SSL证书时就不需要再次导入了。

更多的DNS API的使用方法请查看官网:https://github.com/acmesh-official/acme.sh/wiki/dnsapi
三、acme.sh安装BuyPass
下面是当时的安装示例。换成其他 CA 后,仍可用 --install-cert 将私钥和完整证书链复制到 Web 服务实际使用的路径,并设好续期后的重载命令。若是 ECC 证书,安装时加 --ecc。旧版 Nginx 配置中的 TLS 1.0 和 1.1 也别照搬。
acme.sh默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化。
正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
Apache example: acme.sh --install-cert -d wzfou.com \ --cert-file /path/to/certfile/in/apache/cert.pem \ --key-file /path/to/keyfile/in/apache/key.pem \ --fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \ --reloadcmd "service apache2 force-reload" Nginx example: acme.sh --install-cert -d wzfou.com \ --key-file /path/to/keyfile/in/nginx/key.pem \ --fullchain-file /path/to/fullchain/nginx/cert.pem \ --reloadcmd "service nginx force-reload"
注意上面的SSL证书的路径请替换你原来的SSL证书路径。

如果原来没有SSL证书,那你在使用acme.sh安装SSL证书的命令中的路径与你的Nginx或者Apache配置文件中的SSL证书路径保持一致。演示如下:
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name _;
index index.html index.htm index.php;
root /home/wwwroot/default;
ssl_certificate /usr/local/nginx/conf/ssl/ipssl/wzfouip.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/ipssl/wzfouip.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
# openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048
ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
access_log /home/wwwlogs/access.log;
}
有关事项说明:
1.旧环境用的是
service nginx force-reload。现在按实际的服务管理方式设置重载命令,Nginx 可先用nginx -t检查配置,再平滑重载。2.Nginx 的配置
ssl_certificate使用/etc/nginx/ssl/fullchain.cer,而非/etc/nginx/ssl/<domain>.cer,否则 SSL Labs 的测试会报Chain issues Incomplete错误。3.
--install-cert命令可以携带很多参数, 来指定目标文件. 并且可以指定 reloadcmd, 当证书更新以后, reloadcmd会被自动调用,让服务器生效.4.值得注意的是, 这里指定的所有参数都会被自动记录下来, 并在将来证书自动更新以后, 被再次自动调用.
下图是 Buypass 停发前签发成功的记录,图中的有效期和续期说明对应当时的服务。

四、相关问题
4.1 切换CA
要给原来使用 Buypass 的站点更换免费SSL证书,仅改默认 CA 不会把已经部署的证书换掉。先用新 CA 对同一组域名重新签发,再安装新证书和完整证书链。下面是切换默认 CA 的命令。
acme.sh --set-default-ca --server letsencrypt acme.sh --set-default-ca --server zerossl
只换一个站点时,可以在签发命令中直接指定 --server letsencrypt。下面用 Cloudflare DNS API 举例,运行前要先配置该域名的 DNS API 凭据。签发后按第三节安装,再从浏览器查看正在使用的证书签发机构和到期日。
acme.sh --issue -d example.com --dns dns_cf --server letsencrypt
4.2 更新证书
Buypass 旧免费SSL证书已无法续期。下面保留原来的强制续期命令供排查旧任务时对照。换证后,先检查新证书的签发 CA、验证方式和安装路径,平时让 acme.sh 的定时任务处理续期即可。
acme.sh --renew -d wzfou.com --force
文章出自:挖站否 https://wzfou.com/buypass-ssl/,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。














acme.sh真的是方便了我们这些没钱的站长了。