使用Ansible上传AWS证书遇MalformedCertificate错误求助
解决Ansible
iam_cert 模块上传证书时的 MalformedCertificate 错误 我看你在用Ansible的iam_cert模块给AWS IAM上传证书时碰到了MalformedCertificate错误,这个问题一般是AWS没法正确解析你提供的证书文件导致的,下面给你几个排查和解决的方向:
首先贴出你的任务代码方便参考:
- name: create_elb_cert - upload certificate to aws for {{ customer_name }} iam_cert: name: '{{ elb_dns_name }}' state: present cert: '{{ some_folder}}/{{ app_cert }}_internal.pem' key: '{{ some_folder}}/{{ app_cert }}_internal.key' delegate_to: localhost run_once: True register: 'cert_details'
收到的错误信息:
return (<Code>MalformedCertificate</Code> )return (<Message>Unable to parse certificate. Please ensure the certificate i...</Message> )
接下来一步步排查解决:
- 确认证书是标准PEM格式:AWS只接受PEM格式的证书,你得检查
{{ app_cert }}_internal.pem文件开头是不是-----BEGIN CERTIFICATE-----,结尾是不是-----END CERTIFICATE-----,中间是连续的Base64编码内容。如果是DER格式的证书,用这个命令转成PEM:openssl x509 -inform der -in your-cert.cer -out your-cert.pem - 验证证书本身是否有效:用openssl命令检查证书有没有损坏:
如果这条命令报错,说明证书本身有问题,得重新获取或者生成新的证书。openssl x509 -in {{ some_folder}}/{{ app_cert }}_internal.pem -text -noout - 检查私钥和证书是否配对:私钥和证书必须是一对,用下面两个命令验证,输出的哈希值应该完全一样:
如果不一样,说明你用的私钥和证书不匹配,得换成对应的私钥。openssl x509 -noout -modulus -in {{ some_folder}}/{{ app_cert }}_internal.pem | openssl md5 openssl rsa -noout -modulus -in {{ some_folder}}/{{ app_cert }}_internal.key | openssl md5 - 确认文件路径没问题:因为任务是
delegate_to: localhost,所以要确保localhost上能访问到{{ some_folder}}路径下的这两个文件,你可以先在localhost上手动查看路径、打开文件确认内容正确。 - 检查是否需要证书链:如果你的证书是由中间CA签发的,得把中间证书追加到主证书的PEM文件里(主证书在前,中间证书在后),AWS需要完整的证书链才能正确解析证书。
内容的提问来源于stack exchange,提问作者Noam
相关产品推荐
相关产品推荐

