Amazon AWS 无法验证解冻证书链

Amazon AWS unable to validate thawte certificate chain

我刚刚获得了 Thawte 123 SSL 证书,但在将其上传到 AWS 以将其作为自定义 SNI SSL 证书与 CloudFront 一起使用时遇到了问题。 AWS 拒绝 CA Chain。我正在使用 Thawte Intermediate CA bundle for SSL Web Server and Thawte Wildcard certificates

为了能够使用我的私钥,我将其转换为 RSA 密钥:

openssl rsa -in private.key -out private-rsa-key.pem`

并尝试通过以下方式上传:

aws iam upload-server-certificate --server-certificate-name example.com-certificate --certificate-body file://certificate.pem --private-key file://private.pem --certificate-chain https://search.thawte.com/library/VERISIGN/ALL_OTHER/thawte%20ca/SSL_CA_Bundle.pem --path /cloudfront/example.com/

导致以下错误:

A client error (MalformedCertificate) occurred when calling the UploadServerCertificate operation: Unable to validate certificate chain. The certificate chain must start with the immediate signing certificate, followed by any intermediaries in order. The index within the chain of the invalid certificate is: 0

即使将 thawte_Primary_Root_CA.pem 作为第一个即时签名证书插入证书链,也无法解决问题。

A client error (MalformedCertificate) occurred when calling the UploadServerCertificate operation: Unable to validate certificate chain. The certificate chain must start with the immediate signing certificate, followed by any intermediaries in order. The index within the chain of the invalid certificate is: 1

Thawte CA 链与 AWS 不兼容吗?

使用以下作为 ca 链证书解决问题:

https://ssltools.thawte.com/chainTester/webservice/validatecerts/certificate?certKey=issuer.intermediate.cert.57&fileName=thawte%20DV%20SSL%20CA%20-%20G2&fileExtension=txt

我现在遇到了同样的问题,并尝试了所有方法。 使用 SSL123 证书(我的 rsa 密钥和 pem 都可以)

我无法按任何顺序使用 Thawte 提供的主要和次要证书。 我单独尝试了主要的,单独的次要的,主要的+次要的,次要的+主要的,也尝试了根证书,还尝试了主要和次要来自:

https://search.thawte.com/library/VERISIGN/ALL_OTHER/thawte%20ca/SSL123_SecondaryCA.pem

https://search.thawte.com/library/VERISIGN/ALL_OTHER/thawte%20ca/SSL123_PrimaryCA.pem

我唯一能从ELB得到的是:

无法验证证书链。证书链必须以直接签名证书开始,然后依次是任何中间人。无效证书链中的索引为:0

其中索引并不总是 -1,还包括 0,1 和 2,具体取决于包含的证书的顺序和数量。

[为我解决了]

显然,您创建证书的 EC2 实例会产生影响。我用的是默认AMI的标准EBS实例,再转换Thwate提供的证书,果然成功了。

步骤如下:

企业社会责任:

keytool -genkey -keysize 2048 -keyalg RSA -alias mycertificate -keystore keystore.jks

一旦 Thatwe 回复:(主要是电子邮件链中的第二个证书)。

导入keystore.jks

中的三个证书
keytool -import -alias Primary -trustcacerts -file Primary.crt -keystore keystore.jks
keytool -import -alias Secondary -trustcacerts -file Secondary.crt -keystore keystore.jks
keytool -import -alias mycertificate -trustcacerts -file mycertificate.cer -keystore keystore.jks

JSK > P12 - 将 keystore.jks 转换为 p12 格式

keytool -importkeystore -srckeystore keystore.jsk -destkeystore keystore.p12 -srcstoretype jks -deststoretype pkcs12

P12 > PEM - 将 p12 格式转换为 pem 格式

openssl pkcs12 -in keystore.p12 -out keystore.pem -nodes

PEM > RSA PRIVATE KEY - 以 RSA 格式导出私钥

openssl rsa -in keystore.pem -text > keystore_rsa.pem

这次确实奏效了。

请务必注意,中间证书并非特定于您的域或证书。因此,每个颁发的证书都与您的一样,具有完全相同的中间证书。

您可以将它们想象成支票上的路由号码。路由号码是必需的,但实际上更能说明您的银行而不是您。您的帐号,在本例中为您的证书,对您来说是独一无二的。

由于中间证书的通用性,有这样的网站:

https://www.ssl2buy.com/wiki/ssl-intermediate-and-root-ca-bundle

为不同的证书颁发者预先捆绑(并以正确的顺序)的所有中间证书。

  1. 您必须确保证书、私钥和证书链都是 PEM-encoded,如下所示:
-----BEGIN CERTIFICATE----- << -This is my Intermediate CA which signed my CSR 
Base64-encoded certificate
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- << -This is my Root CA which signed my Intermediate CA
Base64-encoded certificate
-----END CERTIFICATE-----
  1. 您不需要将您的签名证书放入链中。
    只需在链文件中添加中间和根 ca 就足够了。