事情是这样的:
我通过 MediaTemple 网站生成 CSR(这是唯一方法,因为 GS 是共享服务器)。通过 namecheap.com 发送(由 RapidSSL 签名)。
当我拿回证书和 CA 时。尝试将其导入媒体库。我得到了
“密钥不匹配”错误。
联系双方的支持。他们只是不断地将责任推给对方。namecheap.com 说有一个 RSA 密钥生成(我无法访问)。而 media temple 只是直接指责其他人,甚至没有试图解释可能出了什么问题。
我的问题是:
有人有同样的问题吗?
导致此错误的原因可能是什么?
谢谢
答案1
我经常遇到类似的问题,但那是因为我手动生成了大量证书并使用内部 CA 签署它们。
问题的原因非常简单:您的服务器保存的私钥与证书中嵌入的公钥不匹配。
到目前为止,导致此错误最常见的原因是操作员错误,有时软件设计不良会导致此错误。基本上,经常发生的情况是,您生成一个密钥对和一个 CSR(证书签名请求),发送 CSR,然后重新生成一个新的密钥对。如果软件太笨,无法记住多个密钥,那么它将丢失之前生成的私钥。
如果您不愿意简单地将工作外包给服务器运营商,那么解决此类问题的方法就是在本地生成所有内容(使用 OpenSSL 是最佳选择),并小心生成的私钥(我为此使用了本地 Mercurial 存储库,这使我能够跟踪生成的内容,并在必要时回溯)。获得签名证书后,您可以将它与私钥一起发送到服务器。
答案2
Joel Chu,我不知道这是否对你有帮助,但也许,我希望能够帮助其他 MediaTemple 用户。我花了一整天时间尝试在 MediaTemple GridServer 共享主机上配置 certbot 生成的证书,但这也应该适用于 Acme PHP 和其他生成器:
解决方案,据我所知没有记录:
1. 将在 fullchain.pem 上生成的第一个证书粘贴到证书字段。2
. 将在 fullchain.pem 上生成的第二个证书粘贴到 CA /Chain 证书字段。3
. 将在 privatekey.pen 上生成的密钥粘贴,但在第一行和最后一行要有详细信息。
它们必须有 RSA 关键字:
替换现有的-----BEGIN PRIVATE KEY-----
(或文件中的任何内容)
和:
-----BEGIN RSA PRIVATE KEY-----
您必须对最后一行执行相同操作。它应为:
-----END RSA PRIVATE KEY-----
之后,我能够向我的域名添加证书,并且它被 MT 接受。
希望这可以帮助
答案3
我遇到了同样的问题,我通过重新颁发证书并注意不要关闭用于生成 CSR 请求的 mediatemple 选项卡解决了该问题。收到新证书后,我使用同一个选项卡导航回并导入证书。
我第一次这样做(并出现此错误)时关闭了 mediatemple CSR 选项卡,(甚至可能在执行此操作之前重新加载了它)这可能导致 mediatemple 软件生成新密钥,从而导致密钥不匹配。