Skip to content

Commit 82df1ef

Browse files
author
Ben Fortuna
committed
Added support for locally-signed certificate imported to ACM
1 parent 55b759a commit 82df1ef

File tree

5 files changed

+92
-0
lines changed

5 files changed

+92
-0
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@ clean:
1111

1212
test:
1313
$(TERRAFORM) init && $(TERRAFORM) validate && \
14+
$(TERRAFORM) init modules/locally_signed && $(TERRAFORM) validate modules/locally_signed && \
1415
$(TERRAFORM) init modules/self_signed && $(TERRAFORM) validate modules/self_signed
1516

1617
docs:
1718
docker run --rm -v "${PWD}:/work" tmknom/terraform-docs markdown ./ >./README.md && \
19+
docker run --rm -v "${PWD}:/work" tmknom/terraform-docs markdown ./modules/locally_signed >./modules/locally_signed/README.md && \
1820
docker run --rm -v "${PWD}:/work" tmknom/terraform-docs markdown ./modules/self_signed >./modules/self_signed/README.md
1921

2022
format:
2123
$(TERRAFORM) fmt -list=true ./ && \
24+
$(TERRAFORM) fmt -list=true ./modules/locally_signed && \
2225
$(TERRAFORM) fmt -list=true ./modules/self_signed

modules/locally_signed/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
## Requirements
2+
3+
No requirements.
4+
5+
## Providers
6+
7+
| Name | Version |
8+
|------|---------|
9+
| tls | n/a |
10+
11+
## Inputs
12+
13+
| Name | Description | Type | Default | Required |
14+
|------|-------------|------|---------|:--------:|
15+
| common\_name | Certificate common name | `any` | n/a | yes |
16+
| country | Certificate country | `any` | n/a | yes |
17+
| organization | Certificate organization | `any` | n/a | yes |
18+
19+
## Outputs
20+
21+
| Name | Description |
22+
|------|-------------|
23+
| certificate\_arn | ARN of generated ACM certificate |
24+

modules/locally_signed/main.tf

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
resource "tls_private_key" "ca_cert" {
2+
algorithm = "RSA"
3+
}
4+
5+
resource "tls_self_signed_cert" "ca_cert" {
6+
allowed_uses = [
7+
"key_encipherment",
8+
"digital_signature",
9+
"server_auth",
10+
]
11+
key_algorithm = "RSA"
12+
private_key_pem = tls_private_key.ca_cert.private_key_pem
13+
is_ca_certificate = true
14+
validity_period_hours = 2160
15+
subject {
16+
common_name = var.common_name
17+
organization = var.organization
18+
country = var.country
19+
}
20+
}
21+
22+
resource "tls_cert_request" "certificate" {
23+
key_algorithm = "RSA"
24+
private_key_pem = tls_private_key.ca_cert.private_key_pem
25+
subject {
26+
common_name = var.common_name
27+
organization = var.organization
28+
country = var.country
29+
}
30+
}
31+
32+
resource "tls_locally_signed_cert" "certificate" {
33+
allowed_uses = [
34+
"key_encipherment",
35+
"digital_signature",
36+
"server_auth",
37+
]
38+
ca_cert_pem = tls_self_signed_cert.ca_cert.cert_pem
39+
ca_key_algorithm = tls_self_signed_cert.ca_cert.key_algorithm
40+
ca_private_key_pem = tls_private_key.ca_cert.private_key_pem
41+
cert_request_pem = tls_cert_request.certificate.cert_request_pem
42+
validity_period_hours = 2160
43+
}
44+
45+
module "certificate" {
46+
source = "../.."
47+
48+
private_key = tls_private_key.ca_cert.private_key_pem
49+
certificate_body = tls_locally_signed_cert.certificate.cert_pem
50+
}

modules/locally_signed/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
output "certificate_arn" {
2+
value = module.certificate.certificate_arn
3+
description = "ARN of generated ACM certificate"
4+
}

modules/locally_signed/vars.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
variable "common_name" {
2+
description = "Certificate common name"
3+
}
4+
5+
variable "organization" {
6+
description = "Certificate organization"
7+
}
8+
9+
variable "country" {
10+
description = "Certificate country"
11+
}

0 commit comments

Comments
 (0)