作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢!


运行的流程可以抽象为上图。

直接贴代码:

  • letsencrypt.tf
terraform {
required_providers {
acme = {
source = "vancluever/acme"
version = "~> 2.0"
}
}
} provider "acme" {
server_url = "https://acme-staging-v02.api.letsencrypt.org/directory"
} resource "tls_private_key" "private_key" {
algorithm = "RSA"
} resource "acme_registration" "reg" {
account_key_pem = tls_private_key.private_key.private_key_pem
email_address = "nobody@ahfu-zhang.com"
} resource "acme_certificate" "certificate" {
account_key_pem = acme_registration.reg.account_key_pem
common_name = "ahfu-zhang.com"
#subject_alternative_names = ["www2.ahfu-zhang.com"] dns_challenge {
provider = "cloudflare"
config = {
CLOUDFLARE_DNS_API_TOKEN = "在 cloudflare 站点上申请 token"
#CF_ZONE_API_TOKEN = "xxxxx"
# 上面一行一定不要加,加了就会出现错误: cloudflare: failed to find zone ahfu-zhang.com: ListZonesContext command failed
CLOUDFLARE_TTL = "150" #cloudflare: invalid TTL, TTL (60) must be greater than 120
}
}
} output "certificate_pem" {
description = "The certificate in PEM format."
value = acme_certificate.certificate.certificate_pem
} output "fullchain_pem" {
description = "The certificate concatenated with the intermediate certificate of the issuer."
value = join("", [
acme_certificate.certificate.certificate_pem,
acme_certificate.certificate.issuer_pem
])
} output "issuer_pem" {
description = "The intermediate certificate of the issuer."
value = acme_certificate.certificate.issuer_pem
} output "private_key_pem" {
description = "The certificate's private key, in PEM format."
#value = tls_private_key.certificate.private_key_pem
value = tls_private_key.private_key.private_key_pem
sensitive = true
}

执行命令来运行:

terraform init
terraform validate && terraform plan
terraform apple -auto-approve

【代码分享】使用 terraform, 在 Let's Encrypt 上申请托管在 cloudflare 上的域名对应的证书的更多相关文章

  1. 兼容PHP和Java的des加密解密代码分享

    这篇文章主要介绍了兼容PHP和Java的des加密解密代码分享,适合如服务器是JAVA语言编写,客户端是PHP编写,并需要des加密解密的情况,需要的朋友可以参考下 作为一个iOS工程师来解决安卓的问 ...

  2. JAVA基础代码分享--求圆面积

    问题描述 用户输入圆的半径,计算并显示圆的面积 代码分享 /** * @author hpu-gs * 2015/11/25 */ public class Circle { public stati ...

  3. JAVA基础代码分享--DVD管理

    问题描述 为某音像店开发一个迷你DVD管理器,最多可存6张DVD,实现碟片的管理. 管理器具备的功能主要有: 1.查看DVD信息. 菜单选择查看功能,展示DVD的信息. 2.新增DVD信息 选择新增功 ...

  4. JAVA基础代码分享--学生成绩管理

    问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10  等级为’A’   成绩>=最高分-20  等级为’B’ 成绩>=最高分-30  等级为’C’ ...

  5. jQuery插件库代码分享 - 进阶者系列 - 学习者系列文章

    这些天将原来在网上找的jQuery插件进行了下整理,特此将代码分享出来给大家. 见下图结构. 对目录结构进行了分类.这里是插件列表. 这里总共收集了20来个插件.还有下面未进行划分的. 下面是DEMO ...

  6. .net之工作流工程展示及代码分享(四)主控制类

    现在应该讲主控制类了,为了不把系统弄得太复杂,所以就用一个类作为主要控制类(服务类),作为前端.后端.业务逻辑的控制类. WorkflowService类的类图如下: 该类的构造函数: public ...

  7. .net之工作流工程展示及代码分享(三)数据存储引擎

    数据存储引擎是本项目里比较有特色的模块. 特色一,使用接口来对应不同的数据库.数据库可以是Oracle.Sqlserver.MogoDB.甚至是XML文件.采用接口进行对应: public inter ...

  8. .net之工作流工程展示及代码分享(二)工作流引擎

    在介绍完表单类的时候,接下来介绍工作流引擎,主要由四个类组成,分别是流程.流程步骤.流程实例.流程步骤实例类. 流程类: [Serializable] public class Flow { [Xml ...

  9. .net之工作流工程展示及代码分享(一)工作流表单

    Workflow表单的作用是能够在客户端进行表单设计,然后在流程中动态开放哪些输入框可以供用户填写. 在这里我扩展了一个常用的WebEditor工具——KindEditor,能够插入自定义的html符 ...

  10. .net之工作流工程展示及代码分享(预告)

    最近在帮公司做一个工作流程序模块,要求是可以嵌入到各种现有的程序中去.我想把自己制作的思路和过程同大家分享. 先上一张结构图: 由于该项目我一个人做,所以系统结构不能太复杂. 用到的技术主要有:DDD ...

随机推荐

  1. Gartner 权威解读: SBOM 采用率将于2025年达到60%

    随着现代软件开发越来越依赖于第三方资源,针对软件供应链的恶意攻击数量也随之激增.据业内权威机构 Gartner 预计,软件物料清单 (SBOM) 的采用率在 2025 年将会达到 60%. Gartn ...

  2. 火山引擎DataLeap数据质量解决方案和最佳实践(二):解决方案

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap流批数据质量解决方案 产品功能架构 火山引擎DataLeap流批数据质量解决方案有 4 个大的功能 ...

  3. 既快又稳还方便,火山引擎 VeDI 的这款产品解了分析师的愁

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 "数据加载速度变快了."这是小吴在使用 DataWind 后的第一感受. 目前就职于国内一家手 ...

  4. MySQL java new dat() 后插入数据库的时间不一致

    别用时间字段,做为关联字段,代码里的时间和插到数据库中有误差 MySQL java new dat() 后插入数据库的时间不一致,代码里new 的时间插到数据库中不一致

  5. Error unprotecting the session cookie.The key {...} was not found in the key ring.

    .Net Core 3.0 续:Error unprotecting the session cookie.The payload was invalid. 出现了新的BUG warn: Micros ...

  6. Python openpyxl 将 Excel中的汉字 转换成拼音首字母

    将Excel中的汉字列,转换成拼音首字母,并保存 需要安装导入  pypinyin.openpyxl 库 # pip install pypinyin from pypinyin import laz ...

  7. flask自定义参数校验、序列化和反序列化

    项目总体结构 我的工厂函数factory.py from settings import setting from flask import Flask from models.models impo ...

  8. 白嫖:GPT-4

    众所周知,GPT-4需要充OpenAI 的 Plus才能使用,Plus则需要每月20美金. 很多同学很想体验GPT-4,但一方面不想花钱,一方面想花也没那么容易花出去(懂的都懂) 我看到有人分享可以免 ...

  9. 【白话科普】聊聊 DNS 的那些小知识

    你是否在上网时,遇到过这样的情况:QQ 能正常发送消息,但是网页却打不开,查看网络连接又正常显示.面对这种情况很多小伙伴都感到有些无措.那究竟要怎么处理,这究竟是怎么回事呢? 上网查询得知,一般情况下 ...

  10. 海外加速,让你拥有和 Steam 一样的高速下载

    Hello 各位亲爱的观众老爷们,好久不见呀. 暗影界的大门开了,育碧的限时原价结束了,美末 2 都拿年度游戏奖了,你们有猜到二狗子现在哪里么?听了不要吓一跳,二狗子刚刚抵达夜之城了!什么,你问二狗子 ...