首页 > 其他分享 >阿里云函数计算自定义域名的SSL证书免费全自动申请及部署

阿里云函数计算自定义域名的SSL证书免费全自动申请及部署

时间:2024-09-24 16:38:19浏览次数:7  
标签:自定义 acme 证书 win 申请 SSL 域名 阿里

#### (本人现在只做了证书部署,自动任务可以执行但是所生成的记录值没办法自动在阿里云的域名解析列表中更新,因此查到这篇文章,但发现太麻烦……又感觉以后一定会用到,所以先转载保存记录一下,原文地址:https://developer.aliyun.com/article/1475347)

阿里云函数计算大大简化了开发部署的工作量, 用户只需聚焦于业务逻辑的开发,编写最重要的 “核心代码”; 不再需要关心服务器购买、负载均衡、自动伸缩等运维操作; 极大地降低了服务搭建的复杂性,有效提升开发和迭代的速度。

但是在使用过程中发现,对SSL证书的支持需要支付额外费用, 具体体现在

免费证书从原来的1年免费缩短到3个月, 极大增加了维护工作量。 所有1年有效期的证书都需要收费。
自动化的托管SSL部署需要额外收费。 否则只能手动部署,也太痛苦了。
上面这笔费用虽然不多, 但对于小微企业/个人开发者来说也是一笔费用。因此设法实现了一套全自动, 全免费的SSL证书申请, 续证并部署到函数计算的方案。
# 基本思路
自动向Let's Encrypt申请ssl证书
用阿里云OpenAPI提供的updatecustomdomain,自动更新证书
证书到期之前自动申请新的ssl证书
# 系统环境
本人用的系统环境描述如下:

服务端,FastAPI, Python 3.10, Linux
开发者电脑, Windows 11, Win-Acme, Visual Studio, .NET Core
# 具体步骤
## 1. 自动向Let's Encrypt申请ssl证书
到win-acme官网下载并安装win-acme

官网下载分推荐版本和全插件版本,如果下载的是推荐版本,里面不包括dns验证插件,为了实现自动dns验证, 还需要单独下载岸装自动验证插件,我的域名托管在阿里云所以用阿里云插件,插件在这里下载, 仅需下载针对aliyun的即可。 其他域名服务商下载对应的插件。下载后解压缩到win-acme的根目录。

工具都准备好之后,以管理员身份启动Windows Command, 进入win-acme安装目录, 并运行

.\wacs.exe
在上述命令后面加上--verbose, 显示详细信息, 加上--nocache, 可在同一天内重复申请同一个域名(调试时特别有用)

启动后第一个界面如下

image

这里选择M

image

选择2或者直接Enter

image

直接Enter选择默认

image

这里选择2

image

此处要注意选择6, [dns] Create verification records in ALiYun DNS

image

**** 然后win-acme问你所使用的阿里云dns服务器名称, 这里是名称列表, 复制粘贴过来**

image

这里是询问阿里云OpenAPI的accessKey和accessSecret. 点击阿里云右上角的登录头像,然后选择“AccessKey 管理”。 可以创建accesskey.

把accessKey和accessSecret复制粘贴过来,并根据提示保存到vault供以后使用。此处我在之前的操作中已经保存到了vault,所以直接使用了

image

Private Key类型, 直接选择默认

image

选择证书存储位置,我们把证书保存为PEM文件,故选择2, 并提供文件位置c:\ssl\WinAcme

image

输入证书密码,我选择不需要密码

image

证书保存后的后续步骤, 这里先选择3,等准备好证书部署程序后再修改。
最后, 如果该host已经有了renew任务,还会询问是否覆盖。 选y覆盖已有, 选n创建新的renew任务

image

最后,申请并下载证书成功, 在c:\ssl\WinAcme中可看到证书文件已经生成。

## 2. 用阿里云OpenAPI提供的updatecustomdomain接口,自动更新证书
接口文档在此处可以找到

### 预置条件
由于使用的是UpdateCustomDomain接口, 因此需要先配置好自定义域名, 但不需要启用Https证书,设置自定义域名比较简单,请自行查阅文档。不在此赘述。

使用OpenAPI调试工具,测试UpdateCustomDomain的调用结果。 调用成功后下载所擅长语言的sdk,直接获得可执行的脚本/程序。

但这样获得的脚本/程序只能做为测试用,放在生产环境还不行,因为Certificate和Private Key硬编码在代码中, 而最佳情况是从证书文件中直接读取。 此外还需要记录日志,方便以后排查。

因此我对C#版本的sdk程序做了以下改进

接收domain name做为输入参数

appSettings中增加证书文件目录配置

用NLog记录日志

升级到了.net 6

修改后的代码下载地址: https://gitee.com/flyspirit99/update-ssl

运行命令,进行测试

UpdateSsl.exe yourhost.yourdomain.com

通过查看日志中记录的OpenAPI请求返回的HttpStatusCode, 以及阿里云中显示的证书名,可以确认请求是否成功, 成功的请求会更新文件名为{yourhost.yourdomain.com}-yyyyMMddhhmmss

至此,完成了读取证书文件并更新函数的证书。

## 3.证书到期之前自动申请新的ssl证书
在第一步中实现证书申请时,win-acme自动生成一个renew任务, 该任务每天重复运行,检查证书日期,如果临近过期则重新申请。

但是重新申请的证书只是存放在指定目录中, 现在需要把前两步的工作连接起来。申请证书之后自动调用UpdateSsl程序。

当被询问

Which installation step should run first?:

选择2, 运行一个程序,填入自己的可执行目录路径

image

参数填写证书域名: yourhost.yourdomain.com

这样,当申请证书成功之后,会自动调用UpdateSsl把证书更新到函数上。

注意: 要把程序的sppSettings.json和NLog.config复制到win-acme根目录,因为此时的工作路径是win-acme目录。

# 最后
用上述方法可以扩展到申请任何你名下域名的证书, 或者通配符证书,并部署到函数计算。

全面费,全自动,完美。

标签:自定义,acme,证书,win,申请,SSL,域名,阿里
From: https://www.cnblogs.com/FlippedOvO/p/18429464

相关文章

  • UIOTOS示例:自定义弹窗输出表单数据 | 前端低代码 前端零代码 web组态 无代码 amis gov
    目标对话框作为容器组件,可以隐藏掉默认的窗体头和脚,完全由内嵌页自定义,参见对话框自定义外观。并且也能获取弹窗纯表单数据,如下所示: 步骤内嵌页1.新建略。2.拖放组件拖放三个输入框,标识分别施志伟id、name、phone;两个按钮标识分别设置为cancel和ok 主页面1.新......
  • CloudFlare对接来此加密:实现域名自动验证 快速申请证书
    使用ACME可以方便的申请证书,其中相对比较麻烦的是如何自动验证域名。 CloudFlare有两种接口凭证对接方式。a)具有限制性的APITokens。b)具有所有权限的APIKeys。为了安全起见,来此加密只采用具有限制性的APITokens,用户可以随时取消或修改,以保护CloudFlare的安全。APITo......
  • github pages使用cloudflare加速自定义域名概要
    首先,整个操作涉及三个管理方githubpagescloudflare的DNS解析设置自定义域名的解析设置其次,你需要知悉这些内容DNS及CNAME解析githubpages的基本部署域名的基础管理cloudflare的基本域名添加及解析管理概要步骤githubpages部分在githubpages页面,先启用部署(Build......
  • 万象更新 Html5 - vue.js: vue 指令(自定义指令)
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-vue.js:vue指令(自定义指令)示例如下:vue\directive\vcustom.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>vue指令(自定......
  • go基础-10.自定义数据类型
    在Go语言中,自定义类型指的是使用type关键字定义的新类型,它可以是基本类型的别名,也可以是结构体、函数等组合而成的新类型。自定义类型可以帮助我们更好地抽象和封装数据,让代码更加易读、易懂、易维护自定义类型结构体就是自定义类型中的一种除此之外我们使用自定义类型,还可......
  • 子比主题美化-右上角显示用户自定义头像
    前言使用子比主题的都会发现,在右上方不管用户有没有自定义过头像,都只会显示默认的头像,这就很不科学,也不够个性,所以就有了这个教程,让右上角显示用户自定义的头像效果对比修改前修改后教程开始宝塔面板路径:wp-content/themes/zibll/inc/functions/zib-header.php 156行-......
  • 一行命令,一分钟轻松搞定SSL证书自动续期
    httpsok是一个便捷的HTTPS证书自动续签工具,专为Nginx服务器设计。已服务众多中小企业,稳定、安全、可靠。现在的网站SSL免费证书有效期只有3个月,所以就会有经常更快SSL证书的需求,如果手上需要更换的SSL证书比较多的情况下,那么这将是一个比较繁琐的过程,首先需要挨个去申......
  • Python模块和包:自定义模块和包③
    文章目录一、模块1.1什么是模块1.2创建模块1.3导入模块1.4模块的命名空间二、包2.1什么是包2.2创建包2.3导入包2.4包的命名空间三、综合详细例子3.1项目结构3.2模块代码student.pycourse.pymanager.py3.3主程序代码main.py3.4运行结果四、总结Pyth......
  • Python实战:为Prometheus开发自定义Exporter
    Python实战:为Prometheus开发自定义Exporter在当今的微服务架构和容器化部署环境中,监控系统的重要性不言而喻。Prometheus作为一款开源的系统监控和警报工具,以其强大的功能和灵活性受到了广泛的欢迎。然而,Prometheus本身并不直接监控所有类型的服务或应用,这就需要我们为其开发自定......
  • 直接通过修改二进制文件OpenSSH和OpenSSL的版本为最高版版本来达到形式主义等保要求的
    文章开头的解释和说明本篇文章是通过形式上修改二进制文件中的版本号来达到某些像行尸走肉机器人类形式主义要求的等保标准要求,来完成其要求的“安全加固”。我先吐槽一下,这些形式主义等保标准要求,只按照版本号比对来确定是否为最版本的检测逻辑来批量扫描,扫描出来的漏洞误报率......