3CX Windows 版使用 let’s encrypt 为 ssl 证书自动续签

简介

Let’s Encrypt 是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的 SSL/TLS 证书。

之前我们做了 Linux 版本的 文档 ,这次我们介绍一下 Windows 如何使用 Let’s Encrypt 颁发证书并自动续签。

申请证书

在 Windows 平台上我们使用 win-acme 进行申请证书以及自动续签。

  1. 首先我们需要在服务器上下载 win-acme,下载完解压后运行 wacs.exe 文件,会打开 win-acme 的交互界面。因为 3CX 使用的是 nginx 服务器而不是 IIS 服务器,需要使用高级模式创建证书。按 M 选择高级模式:
  2. 接下来选择手动输入域名,按 1 确认。并手动输入域名
  3. 接下来会提示输入友好名称,这个名称只是用来识别证书,可以直接跳过,也可以根据自己的需求输入信息。
  4. 接下来选择验证方式,我们这边选择使用 DNS 的方式验证,选 2 手动创建记录。
  5. 提示我们选择加密方式,1 是 EC 加密,2 是 RSA 加密。这里我们选 RSA 加密。
  6. 这里是询问我们保存证书的方式,我们需要将 pem 文件保存下来给 Nginx 服务器使用,所以选 3。选完以后会提示我们输入保存的路径,填写一个路径即可,这里使用 C:\SSL
  7. 这一步询问我们是否执行脚本,选 1 不执行。
  8. 接着提示我们需要输入一个邮箱:
  9. 会生成一个 ToS 的 PDF 文件,询问是否用默认程序打开,这里我们输入 N 不打开。下一步询问是否同意 let’s encrypt 的条款,按 Y 选同意。
  10. 接着需要我们在域名中添加 TXT 记录。
    创建一个 TXT 记录,记录填 Record 的值,记录值填 Content 中双引号内的值。完成后稍微等一会在回到 win-acme 界面回车,因为 DNS 解析需要一些时间。
  11. 如果检测通过,界面中会显示 Validation,再按一次回车就会在之前的目录下创建两个文件。

添加到服务器中

接着我们需要修改 Nginx 的配置文件,使用文本编辑器打开 C:\Program Files\3CX Phone System\Bin\nginx\conf\nginx.conf 文件。找到以下两项:

为了保险起见,我们将这两项用 # 注释,重新添加两行,并将生成后的路径和文件名添加到对应的值。

添加完成以后,我们打开命令行或者 Powershell,进入到 C:\Program Files\3CX Phone System\Bin\nginx 目录下并对配置文件测试一下:

如下图所示就说明测试没有问题

重启一下 Nginx 服务器就可以看到 SSL 证书生效了。

这里建议也备份一下 nginx.conf 文件

续签证书

一般情况下 win-acme 是会自动续签证书到之前的指定目录。

Let’s encrypt 每一次签发都是 90 天的有效期,软件默认会在第 55 天续签。

我们重新打开 wacs.exe,输入 L,就可以看到 renew 次数,以及下一次 renew 的时间。接着输入 1 可以查看证书详情:

如果需要手动续签,打开 wacs.exe 后输入 A 也可以进行手动续签。