Terraform部署google_dns_managed_zone使用rsasha1报错如何解决
问题根因
- Google Cloud DNS 2020年之后创建的新项目默认禁用RSASHA1算法用于DNSSEC签名,仅存量已使用该算法的区域默认保留支持。
- 你当前配置采用
nsec作为不存在性验证方案,RSASHA1仅允许和nsec3方案搭配使用,二者不兼容是你尝试1024位密钥仍报错的核心原因。 - Google Cloud DNS对RSASHA1仅开放1024位的密钥长度支持,其余长度均不被平台认可。
解决方案
方案1:调整配置参数适配平台规则
修改你的Terraform配置,调整不存在性验证方案和密钥长度,参考配置如下:
resource "google_dns_managed_zone" "example-zone" { name = "example-zone-02" dns_name = "example-0123.com." description = "DNS Zone with DNSSEC" dnssec_config { default_key_specs { algorithm = "rsasha1" key_length = 1024 key_type = "zoneSigning" kind = "dnsKeySpec" } default_key_specs { algorithm = "rsasha1" key_length = 1024 key_type = "keySigning" kind = "dnsKeySpec" } kind = "managedZoneDnsSecConfig" non_existence = "nsec3" state = "on" } }
修改后重新执行terraform apply即可完成部署。
方案2:申请项目白名单权限
如果调整配置后仍然报错,说明你的项目属于默认禁用RSASHA1的范围,需要提交GCP支持工单,说明业务强制使用RSASHA1的场景,申请为对应项目开启RSASHA1算法使用权限,审核通过后再执行部署即可。
注意事项
- RSASHA1存在已知的密码学碰撞风险,仅在确认业务必须使用的前提下采用以上方案,业务条件允许时请尽快切换到RSASHA256等更安全的算法。
内容的提问来源于stack exchange,提问作者snoozesec
相关产品推荐
相关产品推荐

