惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Spread Privacy
Spread Privacy
T
Threatpost
L
LINUX DO - 热门话题
Google Online Security Blog
Google Online Security Blog
I
InfoQ
大猫的无限游戏
大猫的无限游戏
博客园_首页
爱范儿
爱范儿
有赞技术团队
有赞技术团队
V
Visual Studio Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Privacy International News Feed
C
Cyber Attacks, Cyber Crime and Cyber Security
Jina AI
Jina AI
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
CERT Recently Published Vulnerability Notes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
K
Kaspersky official blog
L
LangChain Blog
G
GRAHAM CLULEY
B
Blog RSS Feed
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
Last Week in AI
Last Week in AI
T
Tailwind CSS Blog
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
Help Net Security
Help Net Security
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
雷峰网
雷峰网
C
Check Point Blog
MongoDB | Blog
MongoDB | Blog
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Vercel News
Vercel News
T
Tor Project blog
T
The Exploit Database - CXSecurity.com
T
Troy Hunt's Blog
W
WeLiveSecurity
T
Threat Research - Cisco Blogs

SSL

iTrustSSL 最新优惠码, DV 单域名 50 元/年 通配符 490 元/年 iTrustSSL 最新优惠码 还是折后 50 元/年 - V2EX Let’s Encrypt 现在申请泛域名证书时, ECC256 是不是不支持 256 位加密算法 - V2EX 手动申请 IP SSL 证书 - V2EX 还有多少人在手动申请 SSL 证书? - V2EX MySSL 推出了新的证书监控平台,还可以 - V2EX ZeroSSL 怎么了? ACME 服务都挂了两天了 - V2EX 证书到期时间再次缩短! - V2EX 《LiteSSL 公益项目全球启动:免费自动签发 TLS/SSL 证书,零门槛接入 HTTPS》 - V2EX 关于 Let's Encrypt 签发的证书 Ending OCSP Support in 2025 的后续问题 - V2EX 求助贴:阿里云的 个人测试证书 pro,不签发的话,有效期多久? - V2EX [求助]在阿里云 ECS Nginx 安装 godaddy SSL 证书后, Windows 的浏览器可以访问, iOS/MacOS 的浏览器打不开 - V2EX Sectigo 单域名 SSL 证书 7.9 一年, Certum 通配符 SSL 证书 129 一年,代理拿货价 - V2EX 5 月份的 iTrustSSL 优惠码,优惠后仍然是 50 元/年 - V2EX SSL/TLS 证书最大有效期缩短到了 47 天 - V2EX iTrustSSL 来波活动 DV 单域名 折后 50 元/年 - V2EX SSL 证书 单域名 40 元/年,通配符 235 元/年 - V2EX 免费赠送 10 个一年通配符域证书,通配符域证书低至$10/年 - V2EX IP 证书拼车 - V2EX Cloudflare 的 SSL.COM 证书是怎么获得的?是付费才有吗? - V2EX 逛论坛发现一家提供一年期免费域名证书的,虽然只能买 3 个免费的 - V2EX 现在最便宜的单域名 SSL 一年期的 就是火山的 6.8 了吧 - V2EX "Let's Encrypt is unable to validate domain names" 嗨,早上起来刷新证书,没想到 LE 也会出故障 SSL 证书有效期可能进一步缩短, FreeSSL 开启 ACME 支持 - V2EX SSL 证书 单域名 40 元/年,通配符 239 元/年 - V2EX Chrome 将不再信任 2024 年 10 月 31 日后 Entrust 签发的 TLS 证书 - V2EX 能否低价申请到 10 年有效期的证书? - V2EX Sectigo SSL 证书 单域名 18 元/年,通配符 150 元/年 - V2EX Sectigo/Certum 骨折价,单域名 20/年,通配符 188 一年 - V2EX 关于 win-acme 生成证书 访问不了的问题 - V2EX 关于 HTTPS 用明文传输密码的问题,真希望 webauthn/passkey 赶快普及吧 - V2EX Google CA 申请 IP SSL 证书 咨询下 SSL 证书渠道 - V2EX 目前有什么免费的 ip 证书吗 - V2EX 那些几十块一年的 AlphaSSL 证书是怎么来的啊? - V2EX 关于开启 Clash 代理后, Cloudflare 颁发的免费 HTTPS 证书在 Google Chrome 浏览器上显示不安全,关闭代理后正常,请问这是什么原因造成的? - V2EX SSL 免费证书调整为 90 天了,要做什么准备 - V2EX 2024 年免费一年期的 SSL 证书 - V2EX 关于昨天淘宝证书过期 - V2EX 泛域名证书哪里有便宜的商家吗? - V2EX 现在哪里还能申请一年的免费 ssl 证书? openssl 连接建立以后,调用 SSL_key_update 更新密钥,要怎么确认密钥确实更新了? - V2EX 抓取的 TLS 加密报文拿到第三方电脑上有办法解密吗?公钥私钥都有 国内云厂免费 1 年 SSL 证书的时代要结束了, Digicert 、TrustAsia 都停止一年期免费证书服务了 SSL 的"无限服务器许可"(Unlimited Server License)是什么意思? hostgn.com 提供免费一年的域名 SSL 证书,免实名!无附加条件 关于使用 acme.sh 生成 SSL 证书的一点小问题 2023,证书加密算法该用 ECC 还是 RSA - V2EX 免费空间的免费二级域名怎么通过 Cloudflare 加 SSL 变成 Https - V2EX 如何在多个服务器之间同步证书 - V2EX
win-acme 自动续期 SSL 证书及上传 WAF - V2EX
dream4ever · 2024-04-21 · via SSL

前情提要

之前在 V2EX 咨询过阿里云免费 SSL 证书的替代方案( https://v2ex.com/t/999627 ),考虑到阿里云服务器目前的操作系统是 Windows Server 2012 ,所以基于 Linux 或者 Docker 的方案就都 pass 了。

再考虑到自动化更新 SSL 证书的需求,所以在经过一番调研之后,最终确定使用 win-acme ( https://www.win-acme.com/ )来完成这一工作。因为虽然 Caddy 也能完成这项工作,但是还需要把在 IIS 中配置好的网站再重新配置一遍,还不知道会有什么新问题。本着尽量不要增加复杂度的理念,所以就没有采用 Caddy 。

由于网站前面还有一层阿里云 WAF ( Web 应用防火墙),各网站的流量都是先由 WAF 检查一遍,过滤掉非法请求之后,才能最终到达服务器。而要使用 WAF 的话,各域名的 DNS 都是解析到 WAF 的地址上的,这也给后面的工作和问题排查带来了一些问题,不过这是后话了。

基本流程测试

把 win-acme 下载并解压到服务器上之后,运行程序,按照网上的教程一步步操作。为了不影响现有各域名上的业务,在阿里云服务器的 IIS 上配置了一个新的域名,并且在阿里云 WAF 里面接入了这个二级域名。

按照教程的操作步骤,成功用 win-acme 申请到了这个二级域名的 SSL 证书,但是默认步骤只会生成一个 Windows IIS 所需的 pfx 格式的证书。如果要让阿里云 WAF 能够正常过滤 HTTPS 流量,还需要上传证书和对应的私钥到阿里云的数字证书管理服务中,然后在阿里云 WAF 的网站接入设置中选择所上传的证书才行。这样一来,还需要让 win-acme 生成 PEM 格式的证书和私钥。

所以基础流程就是:申请证书 → 保存 PFX 格式证书 → 保存 PEM 格式证书。

在用 win-acme 给各个域名申请证书的时候,在验证域名所有权的那一步,有的域名能够验证成功,有的域名就总会失败。考虑到 IIS 上各个域名的配置是一样的,又看了一下 DNS 解析也是一样的格式,那应该就是阿里云 WAF 的问题了。

对比之后发现,有的域名在阿里云 WAF 的配置中同时勾选了 HTTP 和 HTTPS 协议,但是有的只勾选了 HTTPS 协议。对于只勾选了 HTTPS 协议的域名,有的还没有开启 HTTP 到 HTTPS 的强制跳转。

加上域名的 DNS 解析是指向阿里云 WAF 的,于是猜测是 WAF 这里的设置导致了域名所有权的验证失败。于是给全部域名的 WAF 配置都同时勾选了 HTTP 和 HTTPS 协议,并且禁止了 HTTP 到 HTTPS 的强制跳转,这个时候,各个域名的所有权验证终于都能通过了。

Debug 阿里云 Cli

有了 win-acme ,SSL 证书的自动续期就搞定了。但是证书每次续期之后,还需要再把新的证书上传到阿里云的数字证书管理服务中,然后在阿里云 WAF 的网站接入设置中更新证书。既然是 Windows 系统,那就用 PowerShell 写个脚本来实现这个操作好了。

而上面的需求需要调用阿里云的 API ,如果想要用脚本来实现这一功能,就还要用到阿里云 Cli 。在配置阿里云 Cli 的用户凭证时,AccessKey 凭证和 EcsRamRole 凭证方式一开始都有问题,最后把之前的配置信息都删了,新建了一个具有 管理云盾应用防火墙( WAF )的权限 的用户,然后用该用户的 AccessKey 才终于成功调用了阿里云的 API 。

Debug PowerShell

在测试阿里云 API 的调用时,还遇到了一个有些隐蔽的问题,就是在阿里云的 OpenAPI 平台上测试接口调用的时候是没问题的,但是在 PowerShell 脚本中调用就是有问题。到了最后把两种方式的完整命令复制出来对比,才发现 PowerShell 的 Get-Content 命令读取到的 SSL 证书和私钥的文本,换行符都没了,这尼玛!

解决了这个问题后,续期后的新证书和私钥自动上传至阿里云并在 WAF 中更新的功能也就实现了,以后这项工作就不需要自己再手动操作了。

总结

最后再说一下完整的流程和注意事项吧。

  1. 用 win-acme 申请 SSL 证书并实现自动续期。这个程序能够自动把从 IIS 中读取网站信息,申请新证书关联到对应的网站,很省心。
  2. 如果用到了阿里云 WAF 之类的服务,要想防护 HTTPS 流量,就需要上传 SSL 证书和私钥,这样的话需要配置 win-acme 再额外保存一份 PEM 格式的证书和私钥。其中 -crt.pem 后缀的文件是需要导入 WAF 的证书文件,-key.pem 后缀的文件则是需要导入 WAF 的私钥文件。
  3. 如果用到了阿里云 WAF 之类的服务,并且各业务域名的 DNS 都解析到了 WAF 上,那么就要在 WAF 配置中同时启用 HTTP 和 HTTPS ,并且禁止 HTTP 到 HTTPS 的强制跳转,不然有可能在域名所有权验证那一步失败。
  4. 配置阿里云 Cli 的时候,如果配置的各种凭证方式都不管用,可以尝试把旧的配置都删除,包括 Cli 里的配置和阿里云网页端控制台的配置,然后重新来一遍。
  5. PowerShell Get-Content 命令拿到的证书和私钥的文本会丢失换行符,可以参考 https://stackoverflow.com/a/15041925/2667665 这里的方法来解决。
  6. 上传证书和私钥调用的是 WAF 中的 CreateCertificate 这个 API ,将证书关联至 WAF 中接入域名是 CreateCertificateByCertificateId API 。