You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Puppet中用eyaml加密证书密钥存入Hiera的技术问询

嘿,针对你的问题,答案肯定是需要分别加密每个证书、密钥以及中级链式证书之后再存入Hiera哦!这样做不仅符合敏感数据的最小权限原则,后续如果需要更新某一项(比如过期的链式证书)时,也不需要重新加密所有内容,维护起来更灵活。下面是针对GoDaddy通配符证书的具体操作步骤和示例:

操作步骤与示例

1. 准备原始文件

先把你的证书相关文件整理好,假设文件名分别是:

  • 通配符私钥:wildcard_yourdomain_com.key
  • 通配符证书:wildcard_yourdomain_com.crt
  • GoDaddy中级链式证书:godaddy_intermediate.crt

2. 分别加密每个文件内容

使用Puppet eyaml的加密命令处理每个文件,如果你已经配置了eyaml的默认密钥路径(公私钥文件),可以直接用简化命令:

# 加密私钥
eyaml encrypt -f wildcard_yourdomain_com.key

# 加密证书文件
eyaml encrypt -f wildcard_yourdomain_com.crt

# 加密中级链式证书
eyaml encrypt -f godaddy_intermediate.crt

每次执行命令后,你会得到一段类似下面的加密字符串:

ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmTCCAZUCAQAxggFOMIIB...]

把这三段加密结果分别保存好。

3. 将加密内容写入Hiera配置

打开你的Hiera YAML文件(比如common.yaml),按层级结构填入加密后的内容:

ssl::wildcard_cert:
  private_key: 'ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmTCCAZUCAQAxggFOMIIB...]'
  certificate: 'ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmTCCAZUCAQAxggFOMIIB...]'
  intermediate_chain: 'ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmTCCAZUCAQAxggFOMIIB...]'

注意:一定要用单引号包裹加密字符串,避免YAML解析时出现格式错误。

4. 在Puppet模块中调用Hiera值

你可以通过lookup函数在Puppet代码中获取这些加密内容,eyaml会自动完成解密:

$wildcard_ssl = lookup('ssl::wildcard_cert')

# 部署私钥(权限设为0600保证安全)
file { '/etc/ssl/private/wildcard.yourdomain.com.key':
  content => $wildcard_ssl['private_key'],
  mode    => '0600',
  owner   => 'root',
  group   => 'root',
}

# 部署通配符证书
file { '/etc/ssl/certs/wildcard.yourdomain.com.crt':
  content => $wildcard_ssl['certificate'],
  mode    => '0644',
  owner   => 'root',
  group   => 'root',
}

# 部署中级链式证书
file { '/etc/ssl/certs/godaddy_intermediate.crt':
  content => $wildcard_ssl['intermediate_chain'],
  mode    => '0644',
  owner   => 'root',
  group   => 'root',
}

内容的提问来源于stack exchange,提问作者Rodney Bizzell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:27:47