使用terraform 生成自签名证书
terraform 是一个很不错的基础设施工具,我们可以用来做关于基础设施部署的事情,可以实现基础设施即代码
以下演示一个简单的自签名证书的生成(使用tls provider)
main.tf 文件
resource "tls_private_key" "example" {
algorithm = "RSA"
}
resource "tls_self_signed_cert" "example" {
key_algorithm = "${tls_private_key.example.algorithm}"
private_key_pem = "${tls_private_key.example.private_key_pem}"
# Certificate expires after 12 hours.
validity_period_hours = 120000000
# Generate a new certificate if Terraform is run within three
# hours of the certificate's expiration time.
early_renewal_hours = 30000000
is_ca_certificate = true
# Reasonable set of uses for a server SSL certificate.
allowed_uses = [
"key_encipherment",
"digital_signature",
"server_auth",
]
ip_addresses = ["127.0.0.1","192.168.0.111","10.10.18.119"]
dns_names = ["api.example.com", "k8sapi.example.com"]
subject {
common_name = "example.com"
organization = "example, Inc"
}
}
data "archive_file" "userinfos" {
type = "zip"
output_path = "tf-result/cert.zip"
source {
content = tls_private_key.example.private_key_pem
filename = "private_key_pem"
}
source {
content = tls_private_key.example.public_key_pem
filename = "public_key_pem"
}
source {
content = tls_self_signed_cert.example.cert_pem
filename = "cert_pem"
}
}
resource 说明
以上代码使用了archive
provider 进行生成文件压缩,使用tls_private_key
生成私钥
使用tls_self_signed_cert
生成自签名证书
运行
- init 下载插件
terraform init
- 查看计划
terraform plan
效果
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.
------------------------------------------------------------------------
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
<= read (data resources)
Terraform will perform the following actions:
# data.archive_file.userinfos will be read during apply
# (config refers to values not yet known)
<= data "archive_file" "userinfos" {
+ id = (known after apply)
+ output_base64sha256 = (known after apply)
+ output_md5 = (known after apply)
+ output_path = "tf-result/cert.zip"
+ output_sha = (known after apply)
+ output_size = (known after apply)
+ type = "zip"
+ source {
+ content = (known after apply)
+ filename = "cert_pem"
}
+ source {
+ content = (known after apply)
+ filename = "private_key_pem"
}
+ source {
+ content = (known after apply)
+ filename = "public_key_pem"
}
}
# tls_private_key.example will be created
+ resource "tls_private_key" "example" {
+ algorithm = "RSA"
+ ecdsa_curve = "P224"
+ id = (known after apply)
+ private_key_pem = (known after apply)
+ public_key_fingerprint_md5 = (known after apply)
+ public_key_openssh = (known after apply)
+ public_key_pem = (known after apply)
+ rsa_bits = 2048
}
# tls_self_signed_cert.example will be created
+ resource "tls_self_signed_cert" "example" {
+ allowed_uses = [
+ "key_encipherment",
+ "digital_signature",
+ "server_auth",
]
+ cert_pem = (known after apply)
+ dns_names = [
+ "api.example.com",
+ "k8sapi.example.com",
]
+ early_renewal_hours = 30000000
+ id = (known after apply)
+ ip_addresses = [
+ "127.0.0.1",
+ "192.168.0.111",
+ "10.10.18.119",
]
+ is_ca_certificate = true
+ key_algorithm = "RSA"
+ private_key_pem = (known after apply)
+ validity_end_time = (known after apply)
+ validity_period_hours = 120000000
+ validity_start_time = (known after apply)
+ subject {
+ common_name = "example.com"
+ organization = "example, Inc"
}
}
Plan: 2 to add, 0 to change, 0 to destroy.
------------------------------------------------------------------------
Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.
- apply
terraform apply
效果
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
<= read (data resources)
Terraform will perform the following actions:
# data.archive_file.userinfos will be read during apply
# (config refers to values not yet known)
<= data "archive_file" "userinfos" {
+ id = (known after apply)
+ output_base64sha256 = (known after apply)
+ output_md5 = (known after apply)
+ output_path = "tf-result/cert.zip"
+ output_sha = (known after apply)
+ output_size = (known after apply)
+ type = "zip"
+ source {
+ content = (known after apply)
+ filename = "cert_pem"
}
+ source {
+ content = (known after apply)
+ filename = "private_key_pem"
}
+ source {
+ content = (known after apply)
+ filename = "public_key_pem"
}
}
# tls_private_key.example will be created
+ resource "tls_private_key" "example" {
+ algorithm = "RSA"
+ ecdsa_curve = "P224"
+ id = (known after apply)
+ private_key_pem = (known after apply)
+ public_key_fingerprint_md5 = (known after apply)
+ public_key_openssh = (known after apply)
+ public_key_pem = (known after apply)
+ rsa_bits = 2048
}
# tls_self_signed_cert.example will be created
+ resource "tls_self_signed_cert" "example" {
+ allowed_uses = [
+ "key_encipherment",
+ "digital_signature",
+ "server_auth",
]
+ cert_pem = (known after apply)
+ dns_names = [
+ "api.example.com",
+ "k8sapi.example.com",
]
+ early_renewal_hours = 30000000
+ id = (known after apply)
+ ip_addresses = [
+ "127.0.0.1",
+ "192.168.0.111",
+ "10.10.18.119",
]
+ is_ca_certificate = true
+ key_algorithm = "RSA"
+ private_key_pem = (known after apply)
+ validity_end_time = (known after apply)
+ validity_period_hours = 120000000
+ validity_start_time = (known after apply)
+ subject {
+ common_name = "example.com"
+ organization = "example, Inc"
}
}
Plan: 2 to add, 0 to change, 0 to destroy.
Do you want to perform these actions?
Terraform will perform the actions described above.
Only 'yes' will be accepted to approve.
Enter a value: yes
tls_private_key.example: Creating...
tls_private_key.example: Creation complete after 0s [id=4bb57b583566785ce23a003432515e07fcebfdba]
tls_self_signed_cert.example: Creating...
tls_self_signed_cert.example: Creation complete after 0s [id=132700825268662052341550768328847386301]
data.archive_file.userinfos: Refreshing state...
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
- 文件内容
unzip cert.zip
Archive: cert.zip
inflating: cert_pem
inflating: private_key_pem
inflating: public_key_pem
说明
我们可以结合vault 的tls 管理以及tf 方便的进行证书管理——基础设施即代码
参考资料
https://www.terraform.io/docs/providers/tls/r/self_signed_cert.html
https://learn.hashicorp.com/vault/secrets-management/sm-pki-engine
使用terraform 生成自签名证书的更多相关文章
- cmd命令生成android签名证书
cmd命令生成android签名证书,有空在写一篇eclipse导出带签名的apk,这里面包括生成新的签名.现在还是讲讲在cmd怎么操作生成签名证书. 1.dos下进入JDK的bin目录 运行如下命令 ...
- windows下使用makecert命令生成自签名证书
1.makecert命令路径 C:\Program Files (x86)\Windows Kits\8.1\bin\x64 2.生成一个自签名证书 makecert -r -pe -n " ...
- openssl生成自签名证书
1.生成x509格式的CA自签名证书 openssl req -new -x509 -keyout ca.key -out ca.crt 2.生成服务端的私钥(key文件)及申请证书文件csr文件 o ...
- 用OpenSSL生成自签名证书在IIS上搭建Https站点(用于iOS的https访问)
前提: 先安装openssl,安装有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.这里推荐第一种. 安装包:http://slproweb.com/products/ ...
- [ipsec][strongswan] 用strongswan pki工具生成自签名证书
如题.我在实验环境里,分别要为两个endpoint(T9和T129)生成证书. 证书是如何生成的呢? 证书是由根证书机构签发的.申请证书的人将request提交给根证书机构,然后根证书机构根据requ ...
- ios生成自签名证书,实现web下载安装app
抄自http://beyondvincent.com/blog/2014/03/17/five-tips-for-using-self-signed-ssl-certificates-with-ios ...
- 生成自签名证书-开启https
1.生成CA证书 # 生成 CA 私钥 openssl genrsa -out ca.key 2048 # X.509 Certificate Signing Request (CSR) Manage ...
- OpenSSL使用1(用OpenSSL生成自签名证书在IIS上搭建Https站点)(用于iOS的https访问)
前提: 先安装openssl,安装有两种方式,第一种直接下载安装包,装上就可运行:第二种可以自己下载源码,自己编译.这里推荐第一种. 安装包:http://slproweb.com/products/ ...
- Windows下生成自签名证书
最近通过openssl生成了自签名的证书,总结成下面这张图. 说明:下载openssl0.9.8之后解压,然后运行bin\openssl.exe进入openssl运行环境,然后按上图中顺序执行命令.( ...
随机推荐
- tf.tile()函数的用法
y = tf.tile(tf.range(2, dtype=tf.int32)[:, tf.newaxis], [2,3]) # tf.tile(input,[a,b]) 输入数据,按照对应维度将矩阵 ...
- 安装R和RStudio详细步骤
安装这两项都很简单!! 1.首先要下载R安装包,可以去官网下载,也可以直接从我的百度网盘下载. 官网下载步骤: (1)进入网址:https://cran.r-project.org,选择适合自己电脑系 ...
- Oracle PLSQL数据导出csv的案例
之前项目运维人员碰到一个问题,需要写一个存储过程,把数据导出为csv文件,查了一些资料,帮他写成了一个PLSQL,今天拿出来分享一下,不足之处,欢迎指教. 数据背景: 用到两张表,一张存放单位组织名 ...
- 设计模式--Bulider模式
起因:最近在做统计计算,创建的实体中属性比较多,都是一些数值,一开始是通过get.set方法进行赋值,占用了很多业务代码方法的长度,可读性不太好,后来改用了添加构造器的方式,稍显精简了一点,但是每次赋 ...
- 1+X证书学习日志——javascript基础
js javascript js的组成: ECMAscript DOM BOM js放置的位置 <script></script> <script src="路 ...
- 【Win10】系统修改
1.删除“快速访问”[操作说明] a.打开HKEY_CLASSES_ROOT\CLSID\{679f85cb-0220-4080-b29b-5540cc05aab6}\ShellFolder ...
- SAP错误消息调试之七种武器:让所有的错误消息都能被定位
目录 长生剑 - SAPGUI Where Used List 碧玉刀 - ABAP调试器观察点 霸王枪 - ABAP调试器动态断点 多情环 - ABAP代码静态扫描 孔雀翎 - SAT 离别钩 - ...
- 推荐一个去除图片人物背景的工具Removebg
可以在线使用,url:https://www.remove.bg/users/sign_in 用邮箱免注册一个免费账号: 注册的邮箱会收到一封激活账号的邮件: 点击Activate account后激 ...
- Alpha_7
一. 站立式会议照片 二. 工作进展 (1) 昨天已完成的工作 a. 体验,测试,并反馈意见 b. 实现其余的琐碎页面,包括蜕变记录,签到卡 c. 已实现“习惯简记”页面.“习惯简记详情”页面.“已养 ...
- 如何封装一个自己的win7系统并安装到电脑做成双系统
说明: 目前我是刚试玩所以总结得没有很详细,先粗略放一个,下次有时间再分开整理系统封装或者如何制作双系统. 教程参考地址: 1. https://www.sysceo.com/forum/thread ...