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

使用Python向AWS ACM导入OpenSSL证书时遇ValidationException错误求助

解决AWS ACM导入证书时的ValidationException错误

我一眼就看出问题出在哪了——你给ACM的import_certificate API传的是文件名,但这个API要求的是证书/密钥的原始文本内容!

问题根源

AWS ACM的Certificate、PrivateKey和CertificateChain参数需要接收的是字符串格式的证书内容(比如PEM格式的文本),而不是文件名。你直接传'sample.vpn.crt'这种字符串,ACM会把它当作证书内容解析,自然会因为格式完全不对,触发“包含多个证书”的验证错误。

修复后的代码

你需要先读取本地文件的内容,再把内容传给API。修改后的代码如下:

import boto3

client = boto3.client('acm')

def lambda_handler(event, context):
    # 读取证书文件的原始内容
    with open('sample.vpn.crt', 'r') as cert_file:
        cert_content = cert_file.read()
    
    # 读取私钥文件的原始内容
    with open('sample.vpn.key', 'r') as key_file:
        key_content = key_file.read()
    
    # 读取证书链文件的原始内容
    with open('ca.crt', 'r') as chain_file:
        chain_content = chain_file.read()
    
    # 调用ACM导入接口
    response = client.import_certificate(
        Certificate=cert_content,
        PrivateKey=key_content,
        CertificateChain=chain_content
    )
    return response

额外注意事项

  • 如果你是在Lambda中运行,要确保这些证书文件已经打包到Lambda的部署包里,或者通过S3等方式加载到执行环境中,否则会出现文件找不到的错误。
  • 私钥必须是未加密的:如果你的私钥是加密状态(比如生成时设置了密码),需要先用OpenSSL解密:
    openssl rsa -in sample.vpn.key -out decrypted_sample.vpn.key
    
  • 证书链要保证顺序正确:用户证书在前,然后是中间CA证书,最后是根CA证书(ACM通常会自动调整顺序,但手动保证正确能避免不必要的问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:38:15