5

我无法生成 Heroku 将为 secure.mydomain.com 接受的 ssl 证书。我正在使用 DNSimple、Cedar Stack,并按照此处的说明进行操作:https ://devcenter.heroku.com/articles/ssl-certificate

  1. 从 DNSimple 复制 server.key 和 server.orig.crt
  2. 获取根 CA 证书$ curl https://knowledge.rapidssl.com/library/VERISIGN/ALL_OTHER/RapidSSL%20Intermediate/RapidSSL_CA_bundle.pem > rapidssl_bundle.pem
  3. 连接成一个文件cat server.orig.crt rapidssl_bundle.pem > server.crt

所以现在我有了 server.key 和 server.orig.crt 文件,我尝试用$ heroku certs:add server.crt server.key. 这给出了错误

Key could not be read since it's protected by a passphrase.

上面的文档没有提到任何关于从 server.key 文件中删除密码的内容。所以我四处寻找并在这里找到了文档:https ://devcenter.heroku.com/articles/ssl#customdomain-ssl 。我在上面的 #1 和 #2 之间运行这些命令:

1b。$ mv server.key server.orig.key

1c。$ openssl rsa -in server.orig.key -out server.key

然而,这给出了错误

unable to load Private Key
47930:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-47/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY

我怀疑这意味着没有找到私钥。

有人知道这里有什么问题吗?这是 Heroku 问题还是 openssl 问题(或 DNSimple 问题)?

4

5 回答 5

8

我刚刚在使用 DNSimple 和 RapidSSL 在 Heroku 应用程序上安装 SSL 证书时遇到了几乎相同的问题,并且想在此处发布我的解决方案,以防遇到类似问题的人遇到此响应。

我已经按照 SO 和 Heroku 开发中心各处的指示通过 DNSimple 和 RapidSSL 安装证书,但每次我尝试使用以下命令添加证书时:

$ heroku certs:add server.crt bundle.pem server.key

无论我做什么,我都会收到此错误:

$ Adding SSL Endpoint to mysite... failed
 !    Key could not be read since it's protected by a passphrase.
 !    Read instructions on how to remove the passphrase on:
 !    http://www.madboa.com/geek/openssl/#key-removepass`

我知道密钥没有密码(因为我多次经历了那个过程),但它仍然不想添加它们。我做了两件事最终让它发挥了作用,尽管我不确定哪一件是关键。

首先,我确保从 RapidSSL 电子邮件链接到中间证书的 Apache、Plesk 和 CPA 框下下载正确的 PEM 文件。

第二件事是通过以下步骤验证我的 Heroku 工具带安装:https ://devcenter.heroku.com/articles/heroku-command#installing-the-heroku-cli

原来我仍在使用 gem 并且不得不卸载,直到我到达 heroku-toolbelt,之后我尝试再次添加证书,瞧。

于 2013-05-16T03:27:50.383 回答
2

为这个问题苦苦挣扎了好几天!直到我遇到这个线程并遵循升级建议。我要做的第一件事是

gem 卸载 heroku --all

由于我在 stackoverflow 上阅读了另一篇文章,我对保留可执行文件的问题回答了“是”。然后我去了https://toolbelt.herokuapp.com/并安装了工具带(即使 heroku --version 说它已安装)。将其升级到 heroku-toolbelt 2.39.0。重试了以下命令,它起作用了:

heroku 证书:添加 cert.cer bundle.pem server.key

也许今晚我终于可以睡一觉了:)

于 2013-07-11T04:53:49.077 回答
1

这真的很愚蠢,但据我所知,在 Mac OS 中使用 TextEdit 保存初始 server.key 和 server.orig.crt 文件存在问题。

我改用 TextMate,一切正常。

于 2012-11-09T08:59:42.260 回答
0

旧的工具带安装是我在 Windows 上的问题。

即使heroku update将版本号从 2.30.1 更改为 2.39.0,aheroku version显示由于某种原因它没有正确更新。

我从https://toolbelt.herokuapp.com/重新安装了工具带并再次尝试,一切正常。

heroku version现在对我说这个,并且 certs:add 正常工作:

heroku-gem/2.39.0 (i386-mingw32) ruby/1.9.2
于 2013-05-17T00:33:34.177 回答
0

我现在遇到了同样的错误,即使是最近的heroku/7.47.6(来自 npm)。原因原来是我从 Let's Encrypt 得到了一个椭圆曲线证书,私钥文件包含:

-----BEGIN EC PRIVATE KEY-----

根据https://devcenter.heroku.com/articles/acquiring-an-ssl-certificate,这不受支持:

Heroku 仅支持证书的 RSA 密钥。不支持椭圆曲线键。

一旦我获得了 RSA 证书,它就起作用了。

(具体来说,脱水现在默认为--algo secp384r1,我必须提供--algo rsa。但这个想法应该与其他工具/CA 相同,您需要 RSA 证书。)

于 2020-12-23T12:08:43.113 回答