关于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
相关产品推荐
相关产品推荐

