Heroku SSL端点出现问题

5
我试图将SSL证书添加到Heroku。该证书是从 Network Solutions 购买的。我按照所有步骤操作,创建了 .csr 文件,上传该文件至 NetworkSolutions,并下载他们的证书包含 .crt 文件(MYSITE.crt, AddTrustExternalCARoot.crt, NetworkSolutionsDVServerCA.crt)并且合并站点证书和中间证书(AddTrustExternalCARoot.crt)的包裹。当我尝试将最终生成的 final.crt 文件添加到 Heroku 时,出现以下错误:
!    Expires at can't be blank
!    Pem is invalid

使用预览,我清楚地看到“Not Valid After”已设置,所以我真的不确定发生了什么。
说实话,我也尝试过将NetworkSolutionsDVServerCA.crt与MYSITE.CRT结合起来,还尝试了将所有3个文件都结合在一起。但都没有成功。
这种事情不是我的强项(我相信你可以看出来),所以很可能我漏掉了什么,但如果你有任何想法,我会很感激。
谢谢。

你解决了这个问题吗?我也遇到了同样的问题。如果你能分享解决方法,那将会非常有帮助。谢谢。 - Erik J
没有,我最终转而去做其他事情,并想着之后再回来解决它。你找到解决方案了吗? - Brent
4个回答

12

我今天遇到了同样的问题。

以下是我遵循的步骤来解决它。

  1. 将证书文件按照下面的顺序(从站点证书到根证书)合并为一个 .crt 或 .pem 文件。假设您将其命名为 Mysite_combined.crt

    MySite.crt、NetworkSolutionsDVServerCA.crt、AddTrustExternalCARoot.crt

  2. 打开 Mysite_combined.crt,文件内容会看起来像:

    -----BEGIN CERTIFICATE-----
    ..
    -----END CERTIFICATE----------BEGIN CERTIFICATE-----
    ..
    -----END CERTIFICATE----------BEGIN CERTIFICATE-----
    
    现在,在每个证书之间插入换行符。确保编辑后的文件中没有空格或空行。现在内容应该看起来像:

    -----BEGIN CERTIFICATE-----
    ..
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    ..
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    
    1. 现在使用以下命令将证书添加到Heroku:

      heroku certs:add Mysite_combined.crt Mysite.key

    注意:由于Network Solution证书没有密码,您可以忽略在Heroku网站中删除密码的步骤。如果您使用有密码的密钥,请参考这篇文章来详细了解如何为Heroku设置SSL。无论如何,您都应执行上述步骤2。


1
谢谢!完美地运作了。如果Heroku更新其文档,那就太好了! - Mark Ellul
非常感谢!我刚刚花了2个小时来解决同样的问题。合并文件中证书之间的换行符是关键!+1 更新Heroku文档。 - Simon Bagreev
请注意,当您合并这两个文件时,使用.crt可能比.pem更安全,尽管正如您所提到的,无论哪种方式都应该可以工作...当我尝试使用.pem时,Heroku出现了问题,但是当我使用.crt时它就可以工作了。这是完全相同的文件,因为我只是将.pem复制到一个新的.crt文件名中。 - jpw

1

很可能在将您的证书与中间证书合并时出现了错误。您应该检查是否缺少换行符或多余的换行符导致了错误。


很遗憾,情况并非如此。从我所读的内容来看,这似乎是最常见的问题,但它似乎更深层次。昨天我花了太多时间试图解决它,所以这个周末要尝试重新开始。感谢您的回复。 - Brent

0
当我遇到这个错误时,我必须在运行此命令之前在我的site.crt末尾添加一个换行符:
$ cat site.crt ca_bundle.pem > final.crt

0

我也遇到了这个问题,后来发现是参数的顺序问题。显然,Heroku 实用程序希望 .crt 文件在 .key 文件之前。

换句话说:heroku certs:add server.crt server.key


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接