Windows + Nginx 的 SSL 免费证书签发与自动续签

浏览器优先使用https协议,且http连接时有安全提示。

使用 Win-ACME 工具,实现 Let’s Encrypt 证书的签发与自动续签

前提:nginx或IIS运行正常,下面以Nginx为例。

下载推荐包:win-acmeReleases · 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中验证:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注