码农之家 - Lets Encrypt
type: channel
link: http://www.liyx.fun/index.php/tag/Lets-Encrypt/
items: 阿里云ECS 使用 win-acme 自动更新 免费SSL泛域名证书 Lets Encrypt

阿里云ECS 使用 win-acme 自动更新 免费SSL泛域名证书 Lets Encrypt
type: item
date: 2020-03-01T22:23:00+08:00
description: 在阿里云上弄了一个ECS小鸡，架了一个博客，域名也是阿里云的，跟风上了SSL，证书用的是免费的 Lets Encrypt，Lets Encrypt非常好，就是证书的期限只有3个月，3个月内要续期，这就比较麻烦了。对于Linux主机来说，网上有大把的教程怎么自动续期证书，但是windows就比较麻烦了。3个月前搜了很久才找到一个 win-acme，按教程，还是比较容易就申请到了两个泛域名证书，但是自动续期需要验证域名的txt记录，本人对PS脚本不熟，对怎么用脚本添加域名txt记录七窍通了六窍，真是可恨。好在阿里云有SDK可以操作云解析，把C#的SDK整到一个小程序里，实现了简单调用就能修改域名txt记录，然后简单写2个脚本配合一下就OK了。先上脚本：ali-dns.ps1：(C:\win-acme\Alidns\ 是存放Alidns.exe的路径，不要有空格，支持二级泛域名txt记录)$action = $args[0] $zone = $args[1] if ($zone.Split(".").length -gt 2) { $zone = $zone.Substring($zone.indexOf(".") + 1) } $name = $args[2].Replace($zone,"").Trim(".") if($action -eq "create") { $text = $args[3] C:\win-acme\Alidns\Alidns.exe $action $zone $name $text }elseif($action -eq "delete") { C:\win-acme\Alidns\Alidns.exe $action $zone $name } restartNginx.bat：(使用了Nginx来发布网站，把Nginx注册成了windows的服务，更新证书后调用此脚本重启Nginx，否则新证书不生效)net stop "Nginx Service" net start "Nginx Service" Alidns.exe.config：(需要把在阿里云申请到的AppKey和AppSecret填入Alidns.exe的配置文件) <add key="AliAppKey" value="Here Is Your AliAppKey"/> <add key="AliAppSecret" value="Here Is Your AliAppSecret"/> 更新域名txt记录的程序在这里下载：Alidns.zip这里主要记录 Alidns.exe 的使用方法， win-acme的使用教程就不细说了，网上一搜一大把。