Heroku ssl证书:密钥无法读取,因为它受密码保护

时间:2012-11-09 08:42:35

标签: ssl heroku openssl ssl-certificate dnsimple

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

  1. 复制server.key&来自DNSimple的server.orig.crt
  2. 使用$ curl https://knowledge.rapidssl.com/library/VERISIGN/ALL_OTHER/RapidSSL%20Intermediate/RapidSSL_CA_bundle.pem > rapidssl_bundle.pem
  3. 获取根CA证书
  4. 使用cat server.orig.crt rapidssl_bundle.pem > server.crt
  5. 连接到一个文件中

    所以现在我有了server.key& server.orig.crt文件,我尝试使用$ heroku certs:add server.crt server.key上传到Heroku。这给出了错误

    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问题)?

5 个答案:

答案 0 :(得分:8)

我只是在使用DNSimple和RapidSSL在Heroku应用程序上安装SSL Certs几乎完全相同的问题,并希望在此处发布我的解决方案,以防有类似问题的人遇到此响应。

我按照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`

我知道密钥没有密码(因为我经历了多次这个过程),但它仍然不想添加密码。虽然我不确定哪一个是硬道理,但我做了两件最终使它工作的事情。

首先,我确保在Apache,Plesk& amp;下载下正确的PEM文件。从RapidSSL电子邮件链接到中级证书的CPA框。

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

原来我还在使用gem并且必须卸载,直到我到了heroku-toolbelt,然后我再次尝试添加证书并且瞧。

答案 1 :(得分:2)

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

gem uninstall heroku --all

我对保留可执行问题回答'是',因为我在stackoverflow上读过另一篇文章。然后我去了https://toolbelt.herokuapp.com/并安装了工具带(尽管heroku --version说它已安装)。升级到heroku-toolbelt 2.39.0。重新尝试以下命令,它起作用了:

heroku certs:添加cert.cer bundle.pem server.key

也许我今晚终于有点睡觉了:)

答案 2 :(得分:1)

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

我使用了TextMate,一切正常。

答案 3 :(得分:0)

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

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

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

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

heroku-gem/2.39.0 (i386-mingw32) ruby/1.9.2

答案 4 :(得分: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 证书,它就奏效了。

(具体来说,dehydrated 现在默认为 --algo secp384r1,我不得不提供 --algo rsa。但其他工具/CA 的想法应该是一样的,你需要一个 RSA 证书。)< /p>