我相信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是否在做与其他邮件不同的事情,如果是,为什么...
答案 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+版本来避免上述问题。