将证书导入 AWS ACM:调用 ImportCertificate 操作时出现 ValidationException:证书字段包含多个证书

将证书导入 AWS ACM:调用 ImportCertificate 操作时出现 ValidationException:证书字段包含多个证书

我正在尝试通过 aws cli 将一些 PEM 格式的 SSL 证书导入 AWS ACM。当尝试使用以下命令导入证书时,这些证书来自 nginx 安装:

aws acm import-certificate --certificate ssl.website.com.crt --private-key ssl.website.com.key --region us-east-2 --profile default

我收到此错误:

An error occurred (ValidationException) when calling the ImportCertificate operation: The certificate field contains more than one certificate. You can specify only one certificate in this field.

我不是 openssl 的专家,但据我所知,pem 文件上只有一个证书,只有一个 BEGIN/END CERTIFICATE 部分。我在这里找到了这个命令stackoverflow 帖子在 pem 文件上打印证书,但我在其输出中只看到一个证书:

openssl crl2pkcs7 -nocrl -certfile ssl.website.com.crt | openssl pkcs7 -print_certs -noout
subject=OU = Domain Control Validated, CN = website.com

issuer=C = US, ST = Arizona, L = Scottsdale, O = "GoDaddy.com, Inc.", OU = http://certs.godaddy.com/repository/, CN = Go Daddy Secure Certificate Authority - G2

那么为什么 ACM 拒绝该证书?或者我(很可能)以错误的方式进行检查,并且该 pem 文件中确实有第二个证书?

答案1

解决了它,您必须在所有参数的值前面加上“file://”作为前缀,如下所示:

aws acm import-certificate --certificate file://ssl.website.com.crt --private-key file://ssl.website.com.key --certificate-chain file://ssl.website.com.ca --region us-east-2 --profile default

我关注本文件没有提到这一点。

答案2

就我而言,证书文件包含多个 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 部分 - 我需要使用第一个,后面的是证书链。

答案3

我遇到了同样的问题,最后得到了解决方案。

这是 AWS CLI 中的一个错误,因为证书是有效的。但是,就我而言,证书文件在每行末尾都有一个多余的空格(顺便说一句,我不知道为什么我们的证书颁发机构(在这种情况下是 Sectigo)会生成如此奇怪的证书)。删除这些多余的空格确实解决了这个问题。

这很简单:

$ perl -i -pe 's/ $//gm' certificate_file.crt

答案4

文档上是这么说的。但你可能没注意到。

使用 CLI 导入证书时,必须通过以 开头的文件名指定证书、证书链和私钥fileb://。例如,您可以指定保存在C:\temp文件夹中的证书为fileb://C:\temp\certificate_to_import.pem。如果您正在发出 HTTP 或 HTTPS 查询请求,请将这些参数作为 BLOB 包含在内。

显示证书路径相关文档的屏幕截图

相关内容