使用Terraform生成ACME证书时OCI密钥Base64解析错误求助
问题分析与解决
错误核心原因:ACME的Oracle Cloud DNS挑战提供者要求OCI_PRIVKEY的值是私钥内容的Base64编码字符串,而非私钥文件路径。你当前传入的是文件路径,导致提供者尝试将路径字符串当作Base64解码,从而触发非法Base64数据的错误。
修正方案
修改dns_challenge中的OCI_PRIVKEY配置,读取私钥文件内容并转换为Base64编码:
resource "acme_certificate" "example_cert" { account_key_pem = file("${var.acme_account_key}") common_name = "test.example.io" dns_challenge { provider = "oraclecloud" config = { OCI_COMPARTMENT_OCID = var.compartment_ocid OCI_TENANCY_OCID = var.tenancy_ocid OCI_USER_OCID = var.user_ocid OCI_REGION = var.region OCI_PUBKEY_FINGERPRINT = var.fingerprint # 读取私钥文件并转为Base64编码 OCI_PRIVKEY = base64encode(file(var.private_key_path)) } } }
额外验证点
- 确认
var.private_key_path指向的私钥文件格式正确(PEM格式,无多余换行或注释) - 确保公钥指纹
var.fingerprint与私钥匹配(可通过openssl rsa -pubout -in /Users/imtiaz/.oci/oci_api_key.pem -outform DER | openssl md5 -c命令验证)
内容的提问来源于stack exchange,提问作者intu
相关产品推荐
相关产品推荐

