diff --git a/CHANGELOG.md b/CHANGELOG.md index 889b6ba..d7b9837 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,3 +16,11 @@ * 1.0.3 -- 2024-04-23 - add output directory for certificates + +* 1.1.0 -- 2024-05-16 + - acmpca + - new outputs + - certificate_details + - certificate_subject + - certificate_issuer_details + - certificate_issuer_subject diff --git a/acmpca/README.md b/acmpca/README.md index f1a6a67..c73e1fa 100644 --- a/acmpca/README.md +++ b/acmpca/README.md @@ -73,6 +73,8 @@ No modules. | [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source | | [aws_ssm_parameter.ca_longterm](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source | | [aws_ssm_parameter.ca_shortterm](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/ssm_parameter) | data source | +| [tls_certificate.certificate](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/data-sources/certificate) | data source | +| [tls_certificate.issuer](https://registry.terraform.io/providers/hashicorp/tls/latest/docs/data-sources/certificate) | data source | ## Inputs @@ -107,6 +109,10 @@ No modules. | [certificate](#output\_certificate) | PEM format for signed certificate | | [certificate\_chain](#output\_certificate\_chain) | PEM format for certificate chain (issuer through root) | | [certificate\_csr](#output\_certificate\_csr) | PEM format Certificate Signing Request | +| [certificate\_details](#output\_certificate\_details) | Certificate details | | [certificate\_filenames](#output\_certificate\_filenames) | Map of certificate file names | +| [certificate\_issuer\_details](#output\_certificate\_issuer\_details) | Certificate Issuer details | +| [certificate\_issuer\_subject](#output\_certificate\_issuer\_subject) | Certificate Issuer Subject field map | | [certificate\_key](#output\_certificate\_key) | PEM format RSA Key | +| [certificate\_subject](#output\_certificate\_subject) | Certificate Subject field map | \ No newline at end of file diff --git a/acmpca/certificate.tf b/acmpca/certificate.tf index 9ba0a2d..057648b 100644 --- a/acmpca/certificate.tf +++ b/acmpca/certificate.tf @@ -127,3 +127,35 @@ resource "local_sensitive_file" "certificate_cert_chain" { content = local.certificate_chain } + +#--- +# so we can pull out fields +#--- +data "tls_certificate" "issuer" { + content = local.certificate_chain +} + +data "tls_certificate" "certificate" { + content = local.certificate_cert +} + +locals { + subject_fields = { + "CN" = "common_name" + "O" = "organization" + "OU" = "organizational_unit" + "C" = "country" + "ST" = "province" + "L" = "locality" + } + + c_issuer = try(data.tls_certificate.issuer.certificates[0], null) + c_issuer_fields = local.cert_issuer != null ? { for k, v in local.cert_issuer : k => v if k != "cert_pem" } : {} + c_issuer_subject = try(local.cert_issuer_fields.subject != "") ? { for x in split(",", local.cert_issuer_fields.subject) : (split("=", x)[0]) => split("=", x)[1] } : {} + c_issuer_subject_map = { for k, v in local.cert_issuer_subject : lookup(local.subject_fields, k, k) => v } + + c_cert = try(data.tls_certificate.certificate.certificates[0], null) + c_cert_fields = local.cert_cert != null ? { for k, v in local.cert_cert : k => v if k != "cert_pem" } : {} + c_cert_subject = try(local.cert_cert_fields.subject != "") ? { for x in split(",", local.cert_cert_fields.subject) : (split("=", x)[0]) => split("=", x)[1] } : {} + c_cert_subject_map = { for k, v in local.cert_cert_subject : lookup(local.subject_fields, k, k) => v } +} diff --git a/acmpca/output.tf b/acmpca/output.tf index 4a884f4..f1f8fc2 100644 --- a/acmpca/output.tf +++ b/acmpca/output.tf @@ -33,3 +33,27 @@ output "certificate_filenames" { chain = local.filename_chain } } + +output "certificate_details" { + description = "Certificate details" + sensitive = false + value = local.c_cert_fields +} + +output "certificate_subject" { + description = "Certificate Subject field map" + sensitive = false + value = local.c_cert_subject_map +} + +output "certificate_issuer_details" { + description = "Certificate Issuer details" + sensitive = false + value = local.c_issuer_fields +} + +output "certificate_issuer_subject" { + description = "Certificate Issuer Subject field map" + sensitive = false + value = local.c_issuer_subject_map +} diff --git a/common/version.tf b/common/version.tf index 1dfb710..9c489cd 100644 --- a/common/version.tf +++ b/common/version.tf @@ -1,3 +1,3 @@ locals { - _module_version = "1.0.3" + _module_version = "1.1.0" }