首页 > 其他分享 >阿里云函数计算域SSL证书免费申请及部署

阿里云函数计算域SSL证书免费申请及部署

时间:2024-04-20 11:11:39浏览次数:27  
标签:acme 证书 win 申请 SSL 阿里 ssl

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

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

  1. 免费证书从原来的1年免费缩短到3个月, 极大增加了维护工作量。 所有1年有效期的证书都需要收费。
  2. 自动化的托管SSL部署需要额外收费。 否则只能手动部署,也太痛苦了。
    上面这笔费用虽然不多, 但对于小微企业/个人开发者来说也是一笔费用。因此设法实现了一套全自动, 全免费的SSL证书申请, 续证并部署到函数计算的方案。

基本思路

  1. 自动向Let's Encrypt申请ssl证书
  2. 用阿里云OpenAPI提供的updatecustomdomain,自动更新证书
  3. 证书到期之前自动申请新的ssl证书

系统环境

本人用的系统环境描述如下:

  1. 服务端,FastAPI, Python 3.10, Linux
  2. 开发者电脑, 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程序做了以下改进

  1. 接收domain name做为输入参数
  2. appSettings中增加证书文件目录配置
  3. 用NLog记录日志
  4. 升级到了.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,阿里,ssl
From: https://www.cnblogs.com/odyssey/p/18147467

相关文章

  • STM32、ESP8266与MQTT连接阿里云物联网的串口通信异常解析
    STM32、ESP8266与MQTT协议连接阿里云物联网平台时常见的串口通信异常介绍在构建物联网应用时,STM32、ESP8266与MQTT协议的结合是实现设备与网络间稳定通信的关键。然而,在连接阿里云物联网平台的过程中,串口通信异常成为了一个常见的挑战。本文将探讨这些异常现象及其可能的原因,并给......
  • 【超详细】Windows申请iOS证书上架App Store详细教程
    ​转载:Windows申请iOS证书上架AppStore详细教程(有这一篇就够了)_windows提交ios审核-CSDN博客Windows申请iOS证书上架AppStore详细教程上架基本需求资料1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程)2、开发好的APP通过本篇教程,可以学习到ios证书申请和打包i......
  • APP阿里云一键取号 (一键登陆)php接口-- (阿里云号码认证服务)
    #通过composer安装阿里云SDK"alibabacloud/dypnsapi-20170525":"^1.1.2","alibabacloud/darabonba-openapi":"^0.2.10","alibabacloud/tea-console":"^0.1.0","alibabacloud/tea-utils":"^0......
  • 【Docker】临时起意用docker在阿里云ECS上部署项目遇到的坑
    我的小项目用到了两个springboot搭建的模块,还有mysql,redis,rabbitmq。因为不了解docker中网络协议栈的隔离而导致一个简单的部署花了我一天时间。关于容器之间端口的映射,可以运行如下命令来查看:[root@iZwz9337zr98g77j7a141hZ~]#dockerps-aCONTAINERIDIMAGE......
  • 对话阿里云佘俊泉:边缘云的持续突破和创新
    近日,全球分布式云大会(GlobalDistributedCloudConference,GDCC)在北京胜利召开。阿里云智能边缘云网产品负责人佘俊泉出席了本次活动的主论坛,并在会议期间,接受了全球分布式云大会的专访,就边缘云的现状、发展趋势以及阿里云的行业发展策略进行了分享。佘俊泉(右) 以下是佘俊泉......
  • php 网页支付 阿里sdk (沙箱测试)
    直接上代码:<?phpnamespaceapp\controller;useapp\BaseController;//require'vendor/autoload.php';useAlipay\EasySDK\Kernel\Factory;useAlipay\EasySDK\Kernel\Config;//http://laremehpe.test.org/index.php/Index/indexclassIndexe......
  • net8 linux docker sqlserver报错error: 31 - Encryption(ssl/tls) handshake failed)
    asp.netcore升级到8.0后遇到数据库不能连接问题?_已解决_博问_博客园(cnblogs.com) 中文提示:连接数据库过程中发生错误,检查服务器是否正常连接字符串是否正确,错误信息:Aconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringthep......
  • OpenSSL测试-SM3
    第二题#include<stdio.h>#include<openssl/evp.h>intmain(){EVP_MD_CTX*mdctx;constEVP_MD*md;unsignedcharmd_value[EVP_MAX_MD_SIZE];unsignedintmd_len;inti;//初始化OpenSSLOpenSSL_add_all_algorithms();......
  • 安装阿里普惠字体-以及部分linux命令整理
    安装阿里普惠字体背景字符编码-字符集-字体信息技术数据的承载体工作中很多时候都需要用到相关内容.字符编码绝对每个字符对应的编码形势,比如Unicode字符集.还有国内的GB2312等.字符集是对字符编码进行一定的规整,便于网络传输与展示等效果比如UTF32定长字符和UTF8边......
  • openssl批量给tar.gz文件加解密
     #!/bin/bash#密码password="your_password_here"#加密函数encrypt(){input_file="$1"output_file="$input_file.enc"opensslenc-aes-256-cbc-salt-in"$input_file"-out"$output_file"-passp......