前言

在现在的网络环境下,你已经几乎很难见到没有使用https加密协议的网站了,即使是我们在自建服务的过程中,为了在外网访问的过程中不会被运营商打开数据包视奸(http不加密)我们就需要ssl证书对流量进行加密。Linux上有 acme.sh这样的方便工具,那Windows呢?同样也是有的,甚至可以同时兼容IIS和其他证书格式,并且一次配置后,就可以再也不管了。这就是今天要介绍的——Win-acme

介绍

Win-acme是基于[let's encrypt](Let's Encrypt)的免费服务开发的一个适用于Windows平台的certbot软件,它会代替你进行申请、续期等证书操作。它有极为简洁的界面(指命令行界面)同时也支持使用 .psl脚本和 .json文件进行自动化操作,有插件支持,最重要的是它完全支持ipv6(Let's encrypt和Win-acme同时都支持)所以它也非常适合于我们在国内的纯ipv6建站使用。

使用教程

下载与界面介绍

你可以通过这里下载到Win-acme同时也建议你在下载的同时访问这个项目的[Github仓库](win-acme/win-acme:一个简单的 Windows ACME 客户端(用于 Let's Encrypt 等))给原作者一个star以支持ta,解压下载得到的压缩包,运行 wacs.exe,然后你就会看到如下图的页面:
屏幕截图 2025-07-13 031421.png
接下来我们逐个解释每个选项:
N: Create certificate (default settings)
指进行一次默认流程的证书注册(注意:这里的默认流程是用于直接适配IIS的)
M: Create certificate (full options)
指进行一次完整流程的证书注册(在这里,你需要进行证书格式,存储空间,类型,适用域名等的配置)
R: Run renewals (0 currently due)
A: Manage renewals (0 total)
这些都要在证书注册后才可能需要使用,故现在暂且按下不表
O: More options...
进行其他的一些设置,一般不需要使用
Q: Quit
就只是退出而已


域名配置

在这里以完整流程进行演示,你可能会看到这样的画面:
屏幕截图 2025-07-13 040341.png
这里是对该证书适用的域名进行配置(警告是由于未检测到演示电脑是否安装有IIS)
同样对选项进行解释
1: Read bindings from IIS(直接读取IIS中每个网站的域名指定)
2: Manual input(直接输入你需要的使用的域名)
3: CSR created by another program(使用CSR证书请求文件)
C: Abort(返回到主菜单)
在这里我们选择2: Manual input
接下来软件提示我们输入域名,这里输入你的域名即可,需要通配符域名的话,只需要写 *.example.com即可 。如果你有多个域名,请在输入一个后,使用英文的逗号隔开。
接下来我们需要对后续生成的证书文件进行命名:


 How shall we determine the domain(s) to include in the certificate?: 2

Description:         A host name to get a certificate for. This may be a
                     comma-separated list.

 Host: examlpe.com

 Source generated using plugin Manual: examlpe.com

 Friendly name '[Manual] examlpe.com'. <Enter> to accept or type desired name:

你可以进行起名或者直接跳过,使用自动生成的名称
接下来,你会看到这一幕
屏幕截图 2025-07-13 042537.png
这里是选择证书使用方式的界面,我们作为一般用户直接回车选择默认即可


验证方式

接下来的是重中之重——域名的所有权验证方式,直接决定了CA判断是否发放ssl证书给你,主要有两种方式:一是对CA方发起的特殊HTTP请求进行应答,二是创建特定的txt类型DNS记录。Win-acme两种都支持。
屏幕截图 2025-07-15 172821.png
同样对每一项进行解释:
1: http Save verification files on (network) path
2: http Serve verification files from memory
这两项的原理相似,同样是CA对申请的域名进行直接访问,只不过一个将验证文件持久化保存,一个直接存于内存中,一般没有特殊需要直接选择2选项即可(注:使用cdn的域名有可能无法验证,且服务器的80端口需要开启)
3: http Upload verification files via FTP(S)
4: http Upload verification files via SSH-FTP
5: http Upload verification files via WebDav
这三项也是相同的原理,但是CA会从这些网络位置提取 web.congfig文件,来进行验证,选择这些方式后,接下来Win-acme会要求你上传 web.config并提供存放位置的域名,需要密码(如果有的话)你可以选择是否保存这些密码在本地以便于未来的自动续期。(注:设置域名时可以在末尾带端口号,但是有大概率在后来的自动续期中被吃掉端口号,尤其是webdav方式)
6: dns Create verification records manually (auto-renew not possible)
7: dns Create verification records with acme-dns (https://github.com/joohoi/acme-dns)
8: dns Create verification records with your own script
现在我们来到了DNS验证方式,第一项是要求你手动创建符合要求的DNS记录,所以相应的无法进行后期的自动续期。第二项是使用一个第三方的dns记录的API,用于自动应答符合要求的txt记录,具体如何使用,本篇文章不会涉及,可能以后会出(挖坑ing)第三项是使用你自己的脚本更新txt记录。
9: tls-alpn Answer TLS verification request from win-acme
这个是基于TLS技术的验证方式,与http方式的原理类似,但是验证文件的校验不会暴露在公网上,需要服务器开着443端口,同时不能用来申请类似 *.example.com的通配符证书

以上需要开放80/443端口的验证方式只需要服务器本地的端口未被占用即可,不需要担心运营商对端口的封锁。


密钥类型与存储方式

完成了验证方式的设置后,剩下的就非常简单啦:
屏幕截图 2025-07-17 211822.png
这是对证书密钥类型的选择,一般选择默认的第二项即可

现在我们来到了证书存储方式的选择:
屏幕截图 2025-07-17 212343.png
仍然进行逐行解释:
1: IIS Central Certificate Store (.pfx per host)
这个方式是适用于IIS的中心证书,当你有一个由多个IIS组成的web服务器集群时,使用这个就可以避免给每一个服务器都申请一次证书,所有服务器只需要使用中心服务器的证书即可。(话说真的会有人搭iis集群吗)
2: PEM encoded files (Apache, nginx, etc.)
这一项会生成4个 .pem后缀的证书相关文件(带完整证书链的证书,证书私钥,单底层证书,单证书链证书)可以说是最常用的证书格式了,当你选择了该项,在后面需要填写存储位置和私钥密码
3: PFX archive
这个格式将私钥,证书,证书链打包在同一个文件中,一些服务的ssl设置可能会需要(如jellyfin的https设置)当你选择之后,可以在接下来的环节中设置文件密码(你也不想要你的证书被盗用吧)
4: Windows Certificate Store (Local Computer)
这个方式将会把证书直接存储到Windows系统本地的证书存储系统中,当你的服务需要使用windows证书管理系统中的证书时有效(如 SQL Server)

完成之后,我们离正式完成准备工作只有一步之遥啦:
屏幕截图 2025-07-17 214157.png
这里Win-acme询问你在获得并存储好证书后,是否需要做些什么来让新的证书能够被应用
1.替换iis上绑定了相应域名的网站的证书
2.启动其它的程序或脚本(如:重启nginx)
3.什么都不干

搞定!!!

当你完成了这一步,win-acme就会开始运行证书申请流程,并按你要求的方式进行各项操作。你可能会被要求提供邮箱以获取来自let's encrypt的公告信息和win-acme的邮件通知(需要配置SMTP服务器)当一切都完成,你就可以享受sll证书带来的无尽好处啦。