Let's Encrypt是我们熟知的免费证书提供服务商,想要获取免费的证书又想到期自动更换,在linux上一般使用certbot,windows则使用Win-ACME官网
大家都知道现在AI很强大了,但AI说的话也我们还是要好好核对一下,我就在用AI的指导下踩了几次坑。 首先下载Win-ACME,注意选pluggable结尾的,这样你可以下载对应的插件解压到exe执行文件所在的目录,这里AI就搞不清最新版是哪一个版本,插件应该解压,而AI跟我说直接把压缩包放程序根目录就好。搞得我试了几遍都不行。
下面正式开始申请证书
以 管理员身份 打开 PowerShell 或 CMD,进入目录
.\wacs.exe
1. 主菜单选择
# 配置全部选项的方式创建新的证书
M: Create new certificate (full options)
2. 输入域名(支持泛域名):
这里如果是泛域名,直接*.yourdomain.com,如果是多个域名用逗号隔开,AI又给我挖了一个坑,说:泛域名要
*.yourdomain.com, yourdomain.com这样写,最后是跑通了,但dns校验怎么都通不过,一看解析记录才发现不对,所以泛域名直接按下面这种写法就行了,再说一句,泛域名只能用dns的验证方式,需要提前准备好token,并下载对应的Win-ACM插件,下面以阿里云为例
Enter one or more host names separated by comma (or press Enter to cancel):
*.yourdomain.com
中间可能还有信息要填,到了dns验证方式选择的时候选Aliyun
没有对应的选项说明,没有识别到插件,后面还会让你输入AccessKey ID和AccessKey Secret,同时也会让你输入一个key保存你的账号密码。
选择证书类型和存储位置
我选择的是nginx支持的PEM,可能还会问你是或否加密私钥,一般选None,不然nginx无法解密也是不能用的。
选择申请完成之后执行的程序或脚本
这里填写nginx执行程序的路径即可如:xx\xx\nginx/nginx.exe
选择申请完成之后执行脚本参数
这里再输入-s reload 即可在申请完成之后让nginx重新加载配置文件
证书申请成功并配置nginx
申请成功会在你指定的目录下生成4个文件,一个是域名证书chain.pem 包含中间链的域名证书,chain-only.pem仅包含中间链的证书,crt.pem 域名证书,key.pem 证书私钥。
# chain.pem 包含了域名证书和中间链,兼容性强
#如果使用crt.pem的话,老旧的安卓IOS版本缺乏中间链可能会出现证书报错的问题net::err_cert_authority_invalid
ssl_certificate -chain.pem;
ssl_certificate_key -key.pem;
这里AI解释的时候都说用chain.pem,但生成的配置文件代码却又是crt.pem,我没仔细看直接复制代码到nginx,导致出现了一堆人的手机小程序访问报错。