Files

92 lines
2.9 KiB
Terraform

terraform {
required_providers {
kms = {
# version = <latest version>
source = "hanzokms/kms"
}
}
}
provider "kms" {
host = "https://kms.hanzo.ai" # Only required if using self hosted instance of Hanzo KMS, default is https://kms.hanzo.ai
auth = {
universal = {
client_id = "<machine-identity-client-id>"
client_secret = "<machine-identity-client-secret>"
}
}
}
# Request a certificate
resource "kms_cert_manager_certificate" "my_cert" {
profile_id = "<internal-ca-profile-id>"
common_name = "api.example.com"
alt_names = ["api.example.com", "api-internal.example.com"]
organization = "Example Corp"
country = "US"
key_algorithm = "RSA_2048"
signature_algorithm = "RSA-SHA256"
ttl = "90d"
timeout_seconds = 300
}
# Request a certificate using a CSR file
resource "kms_cert_manager_certificate" "csr_based_cert" {
profile_id = "<profile-id>"
csr = file("./my-certificate.csr")
ttl = "90d"
timeout_seconds = 300
}
# Request a certificate using an inline CSR
resource "kms_cert_manager_certificate" "inline_csr_cert" {
profile_id = "<profile-id>"
csr = <<-CSR
-----BEGIN CERTIFICATE REQUEST-----
MIICljCCAX4CAQAwGDEWMBQGA1UEAwwNaW5maXNpY2FsLmNvbTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAL7c6thewe78xVXyBQ0ZgmSjlkYCGeJgxot/
QqB1+z3mlMr/tViy8UFBThO69i532ZgWyuJ24YWVeF67WBQPYXnkXlUMJKYGM6UA
ka6dOjCeSJHNXkxbLHI3yljvXP/Kn6w+WczeSuJXYNH5Uet9TtTEuXIqTgWjnAhD
TAWqtyHPbtw3jVWy7xkSc/JuqVGha05snjPPmF9lkdoztG3gosN0TnwTGaQ382sr
giUBkkfdBK0eGmTwJlG9xLZMm3hDyAFz2/iw6GR57uvp/h9RDZVZcuisUQf2T8NZ
CCVPTSGpfYxbQ4KviDghL2/GDY9NVudHSyeCCA0zOPZW9tg7hAECAwEAAaA5MDcG
CSqGSIb3DQEJDjEqMCgwJgYDVR0RBB8wHYINaW5maXNpY2FsLmNvbYIMaW5maXNp
Y2FsLmVzMA0GCSqGSIb3DQEBCwUAA4IBAQBZy+AYPWeZVs+ZPP/9Zj0cl7BchwZV
phEPIezIdKqDyLcyjCf168rbTEqch9gz5CvyIPL3kBohicI/k+/RYPnRKsTdiYNE
XrpeaarHqlvpGzjsrQUv6iJgrDGZXMVJn+op3cDChNPet9RJ1utH96S6W6Ent4QU
90XNi6fBSja8wThfj0AAl51OycHwfNg5/CtygT0eM16/bZl0knJ884Bf35LNE731
Awp8H6ELyXOX1tRKNZRPMKr2Nw/qn6QK611R9aSA+maa25YZa8K0cvSVAJQOfdei
0A7YVKj492nqnN/xS5kzIidZuaCBLocLo5j615xh/79YgMZjrGo3wvnk
-----END CERTIFICATE REQUEST-----
CSR
ttl = "90d"
timeout_seconds = 300
}
# Outputs
output "cert_details" {
value = {
id = kms_cert_manager_certificate.my_cert.id
status = kms_cert_manager_certificate.my_cert.status
serial_number = kms_cert_manager_certificate.my_cert.serial_number
not_before = kms_cert_manager_certificate.my_cert.not_before
not_after = kms_cert_manager_certificate.my_cert.not_after
}
}
output "cert_pem" {
value = kms_cert_manager_certificate.my_cert.certificate
}
output "cert_chain" {
value = kms_cert_manager_certificate.my_cert.certificate_chain
}
output "cert_private_key" {
value = kms_cert_manager_certificate.my_cert.private_key
sensitive = true
}