使用 Win-ACME 工具,实现 Let’s Encrypt 证书的签发与自动续签
前提:nginx或IIS运行正常,下面以Nginx为例。
下载推荐包:win-acme、Releases · win-acme/win-acme

证书签发
设置域名


选择M,手工创建,默认设置是给IIS使用的。

选择2,输入域名,回车确认
域名验证配置

选择2,因为HTTP 验证方式不支持生成泛域名证书。

选择1,使用http文件验证,其他方式取决你自己的情况。有的方式不支持自动续签。

输入webroot目录
配置nginx支持http验证
这时,先去配置Nginx\nginx.conf文件
# 证书验证: root是相对路径 alias 是绝对路径,验证程序会在root目录下创建[.well-known/acme-challenge/xxx]文件,以[y.z/.well-known/acme-challenge/xxx]访问。
location ^~ /.well-known/acme-challenge/ {
default_type "text/plain";
root html;
}
再重新加载生效:nginx.exe -s reload
证书格式配置

输入y,选择2

Nginx,所以选择2
输入证书导出目录,建议为 nginx\conf\xxx 子目录,方便后面使用相对路径做配置。
私钥密码选择1,千万不要输入2或3(会导致nginx加载时要输入密码),万一选择了事后再移除。

不需要附加步骤了,选择5
不需要附加步骤了,选择3
弹出PDF的协议文件,只能两连yy
输入个人邮箱地址
域名验证与证书签发

开始做证书验证与签发,第一个红框,代表授权验证成功。如果失败基本上是nginx配置或目录权限有问题。
箭头位置是创建定时任务,n就可以了;我输了y,结果验证失败,就定时任务创建失败。
第二个红框,代表证书签发完成。
证书文件与Nginx配置

目录里有证书文件了
- {name}-crt.pem(证书) –nginx使用
- {name}-key.pem(私钥) — nginx使用
- {name}-chain.pem(证书加链条)
- {name}-chain-only.pem(无证书链)
Nginx配置
server {
listen 443 ssl;
http2 on;
server_name y.z;
# 相对路径 cert/xxx.pem,为在conf目录中
ssl_certificate cert/y.z-crt.pem;
ssl_certificate_key cert/y.z-key.pem;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
WIN-ACME:其他配置
创建定时更新任务

输入o进入更多菜单
输入t选择创建定时任务
输入n
最后输入q退出
打开任务计划程序,可以看到有定时任务了,不过每天9点执行一次,可以调整为每月一次。证书效期是90天。

移除私钥密码方法


编辑续订


就会将证书重新生成一次。
Nginx 或证书目录移动
在创建证书时,指定了二个目录:验证目录,证书保存目录;后续移动了目录,在续订中也要同步改变。
在 C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org目录中,找到xxxxx.renewal.json文件,有多少续定,就有多少个文件。每个文件里,有二个path字段,对应是验证目录,证书保存目录。
json文件更新后,在Wim-acme中验证:



发表回复