使用Ansible生成自签名OpenSSL证书时私钥密码错误的原因
Ansible x509_certificate 私钥密码错误原因及解决
出现Wrong or empty passphrase provided for private key错误,核心原因是私钥密码在生成和证书签名阶段的传递不匹配,或者模块参数使用不当,具体分以下几种情况:
1. 密码参数传递不一致
你用openssl_privatekey生成带密码ansible的私钥后,在x509_certificate任务中必须通过privatekey_passphrase参数传入完全相同的密码。如果这个参数缺失、拼写错误(比如大小写错误),模块会尝试无密码读取加密私钥,直接触发密码错误。
官方示例未使用密码,是因为示例生成的是无密码私钥,不需要额外传递密码参数,和你的场景完全不同。
2. 私钥文件权限问题
加密私钥文件的权限如果过于宽松(比如0644),Ansible在读取时可能会因为安全限制出现异常,间接导致密码验证失败。必须确保私钥文件权限为0600,仅所有者可读写。
3. 私钥生成时的加密算法问题
如果生成私钥时未指定加密算法(比如cipher: aes256),部分OpenSSL版本可能会默认使用弱加密或不加密,导致后续用密码读取时出错。
修复步骤示例
- 正确生成带密码的私钥:
- name: 创建带密码的OpenSSL私钥 openssl_privatekey: path: /etc/ssl/private/example.key passphrase: ansible cipher: aes256 mode: 0600
- 生成自签名证书时正确传递密码:
- name: 生成自签名TLS证书 x509_certificate: path: /etc/ssl/certs/example.crt privatekey_path: /etc/ssl/private/example.key privatekey_passphrase: ansible provider: selfsigned subject: commonName: example.com
- 验证私钥密码有效性(在目标主机执行):
openssl rsa -in /etc/ssl/private/example.key -check
输入密码ansible,若能输出私钥校验信息,说明密码本身无问题。
内容的提问来源于stack exchange,提问作者Richard Rublev
相关产品推荐
相关产品推荐

