一旦您确定它们不匹配,您仍然面临一个问题--该怎么办。通常,证书可能只是组装错误。当CA签署您的证书时,他们会向您发送一个类似于以下内容的块:
-----BEGIN CERTIFICATE-----
MIIAA-and-a-buncha-nonsense-that-is-your-certificate
-and-a-buncha-nonsense-that-is-your-certificate-and-
a-buncha-nonsense-that-is-your-certificate-and-a-bun
cha-nonsense-that-is-your-certificate-and-a-buncha-n
onsense-that-is-your-certificate-AA+
-----END CERTIFICATE-----
他们还会向您发送一组(通常是两个证书),代表他们授予您证书的权威。这将类似于
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-your-request
-this-is-the-certificate-that-signed-your-request-this
-is-the-certificate-that-signed-your-request-this-is-t
he-certificate-that-signed-your-request-this-is-the-ce
rtificate-that-signed-your-request-A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-for-that-one
-this-is-the-certificate-that-signed-for-that-one-this
-is-the-certificate-that-signed-for-that-one-this-is-t
he-certificate-that-signed-for-that-one-this-is-the-ce
rtificate-that-signed-for-that-one-this-is-the-certifi
cate-that-signed-for-that-one-AA
-----END CERTIFICATE-----
不幸的是,它们不会被如此清晰地标记。
常见的做法是将这些证书捆绑成一个文件——首先是您的证书,然后是签名证书。但由于它们不容易区分,有时候会发生有人无意中颠倒顺序——先是签名证书,然后是最终证书——而没有注意到。在这种情况下,您的证书将无法与您的密钥匹配。
您可以通过运行以下命令来测试证书认为它代表什么:
openssl x509 -noout -text -in yourcert.cert
在顶部附近,您应该看到“主题:”,然后是类似于您的数据的内容。如果看起来像您的CA,则可能是捆绑包的顺序错误;您可以尝试备份,然后将最后一个证书移到开头,希望那是您的证书。
如果这样做不起作用,您可能只需要重新颁发证书。当我制作CSR时,我喜欢清楚地标记它是为哪个服务器而制作(而不仅仅是ssl.key或server.key),并将其副本命名为日期,例如mydomain.20150306.key等。这样,私钥和公钥对不太可能与另一组混淆。