首页 > 其他分享 >【代码分享】使用 terraform, 在 Let's Encrypt 上申请托管在 cloudflare 上的域名对应的证书

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

时间:2023-07-14 17:12:17浏览次数:50  
标签:Encrypt acme certificate pem private terraform key cloudflare

作者:张富春(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   = "[email protected]"
}

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

标签:Encrypt,acme,certificate,pem,private,terraform,key,cloudflare
From: https://www.cnblogs.com/ahfuzhang/p/17554465.html

相关文章

  • 如何有效检测、识别和管理 Terraform 配置漂移?
    在理想的IaC世界中,我们所有的基础设施实现和更新都是通过将更新的代码推送到GitHub来编写和实现的,这将触发Jenkins或Circle-Ci中的CI/CD流水线,并且这些更改会反映在我们常用的公有云中。但现实并没有这么顺利,原因可能有很多,例如: 公司仍处于云自动化的初级阶段;不......
  • 如何有效检测、识别和管理 Terraform 配置漂移?
    作者|KrishnaduttPanchagnula翻译|Seal软件链接|https://betterprogramming.pub/detecting-identifying-and-managing-terraform-state-drift-997366a74537 在理想的IaC世界中,我们所有的基础设施实现和更新都是通过将更新的代码推送到GitHub来编写和实现的,这将触发Jenki......
  • 如何使用 Terraform 和 Git 分支有效管理多环境?
    作者|SumeetNinawe翻译|Seal软件链接|https://spacelift.io/blog/terraform-environments 通常我们使用Terraform将我们的基础设施定义为代码,然后用TerraformCLI在我们选择的云平台中创建制定的基础设施组件。从表面上看,整个过程看起来似乎不需要花费太多精力。然而当我......
  • 运维自动化之Terraform
    前言Infrastructure-as-Code,Terraform是一个不受平台所限平台的开源工具,它允许开发人员将基础设施编写成为声明性配置文件。Terraform支持众多的云供应商,使得开发人员能够在AWS、GoogleCloud、Azure和Oracle等主流云平台中配置资源。......
  • 一日一技:【最新】再次突破CloudFlare五秒盾付费版(转)
    去年我写了一篇文章:一日一技:如何捅穿CloudFlare的5秒盾 ,这篇文章使用的第三方库『cloudscraper』可以绕过免费版的五秒盾。但遇到付费版就无能为力了。最近在爬币圈的网站,其中有一个网站叫做:Codebase使用的就是付费版的CloudFlare五秒盾。当我们使用CloudScraper去爬时,报错如下......
  • CF958C3. Encryption (hard)
    谁说\(n\le5\times10^5\),\(k\le100\),\(p\le100\)只能\(O(nk)\)?我今天就要用\(O(nk\logp)\)过这个题!定义\(f_{i,j}\)表示前\(j\)个数,分成\(i\)段的最小价值和,\(s_i\)表示前缀和(对\(p\)取模),转移就是\(f_{i,j}=\min\limits_{l=1}^{j-1}\left\{f_{i-1,l}+\left(s_......
  • centos下nginx使用Let's Encrypt 申请免费 SSL 证书
    应用场景:想使用https,但是又不想花钱购买证书,也不是阿里和腾讯的可以免费申请以下是具体操作步骤:1.配置DNS记录在申请二级域名SSL证书之前,需要先将该二级域名解析到您的服务器IP地址。2.安装Certbot:Certbot是Let’sEncrypt官方提供的工具,可用于自动化SSL证书的获......
  • Grafana 系列-GaC-2-Grafana Terraform Provider 基础
    系列文章Grafana系列文章Terraform系列文章概述前文最后总结了我的工具选型:GrafanaTerraformproviderJsonnet我们今天先简单介绍GrafanaTerraformprovider.GrafanaTerraformProviderGrafanaprovider为Grafana提供配置管理资源。是目前Grafana官方提供......
  • Grafana 系列-GaC-2-Grafana Terraform Provider 基础
    系列文章Grafana系列文章Terraform系列文章概述前文最后总结了我的工具选型:GrafanaTerraformproviderJsonnet我们今天先简单介绍GrafanaTerraformprovider.GrafanaTerraformProviderGrafanaprovider为Grafana提供配置管理资源。是目前Grafana官方提供......
  • 如何使用 CloudFlare D1 来搭建评论服务?
    在本教程中,我们将学习如何使用D1来搭建一个无服务器评论服务。为此,我们将构建一个新的D1数据库,并构建一个允许创建和检索评论的JSONAPI。这可能是国内第一篇详细介绍D1和具体写法的博文了(bushi)目录设置你的项目创建数据库与D1互动执行SQL插入数据部署使用前端进行测......