Heroku在尝试发送电子邮件时产生500错误

时间:2020-06-01 14:17:19

标签: ruby-on-rails ssl heroku sendgrid

我相信Heroku上有一个Rails应用程序,在尝试发送电子邮件时,它已经开始产生500个错误-我们使用SendGrid插件。

我看到的错误是:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate has expired)

我们的证书由Heroku管理,因此我无法在Heroku控制面板中看到有关证书的信息,但是当我在Chrome中查看该证书时,它们似乎一直有效到7月底。

我已经提出了有关Heroku支持的问题,正在等待答复。

更新:Heroku表示这是因为其堆栈版本16是个问题,我应该升级到18。我这样做了,但没有帮助。

我发现出于某种原因,我显然只能通过Devise邮件程序解决此问题。

我测试了设置OpenSSL :: SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE,这解决了问题...

所以现在我不确定Devise是否在做与其他邮件不同的事情,如果是,为什么...

2 个答案:

答案 0 :(得分:0)

Heroku认为这可能是与Heroku-16堆栈有关的问题。他们建议升级到版本18堆栈。

我尝试过更新到v18堆栈,但是并不能解决我们的问题。

我后来添加了一个日志条目来检查完整的堆栈跟踪,它开始看起来像涉及premailer gem。

我注意到我们在模板中包括了CDN中的Bootstap,并且预邮器可能无法获取CSS。

我最终摆脱了premailer和Bootstrap CSS(无论如何,这实际上对我们有很大帮助)。

这解决了问题,但我从来没有真正理解过真正的原因,可能是Sectigo证书于2020年5月30日到期的结果,正如Heroku在回答这个问题时所建议和mhale所述。

答案 1 :(得分:0)

您似乎已受到此根证书到期问题的影响: https://news.ycombinator.com/item?id=23362759

您应确认Heroku测功机上运行的openssl版本。

您可以通过运行heroku run openssl version -a YOUR_APP_NAME来做到这一点。

您要使用1.1+版本来避免上述问题。