OpenSSL::SSL::SSLError(主机名“smtp.mandrillapp.com”与服务器证书不匹配)

Posted

技术标签:

【中文标题】OpenSSL::SSL::SSLError(主机名“smtp.mandrillapp.com”与服务器证书不匹配)【英文标题】:OpenSSL::SSL::SSLError (hostname "smtp.mandrillapp.com" does not match the server certificate) 【发布时间】:2015-06-27 21:09:53 【问题描述】:

由于将生产 Rails 应用程序迁移到新机器,尝试通过 Mandrill 发送邮件时总是收到以下错误:

这里是

  config.action_mailer.smtp_settings = 
    address: 'smtp.mandrillapp.com',
    port: '587',
    enable_starttls_auto: true,
    user_name: 'XXXXXXXX',
    password: 'XXXXXXXX',
    authentication: 'login', # Mandrill supports 'plain' or 'login'
    domain: 'mydomain.com'   

Mandrill down 不允许 openssl_verify_mode: 'none' 如此处建议:Rails 3: OpenSSL::SSL::SSLError: hostname was not match with the server certificate

当 openssl_verify_mode: 'none' 被设置时,错误变为:

Net::SMTPAuthenticationError(535 验证数据不正确)

关于如何纠正这个问题的任何想法?

【问题讨论】:

端口 587 上的证书与名称匹配,但作为带有主题替代名称的通配符。我建议这可能是您在这台机器上使用的 ruby​​/rails 版本中的一个错误。或者您可能有不同的网络设置,因此您为此主机名获得的服务器与从公共互联网上可见的服务器不同。 【参考方案1】:

我遇到并解决了这个问题(我的 Rails 应用托管在 WHM/cPanel 帐户上)。

诀窍是调整 WHM 设置中的 SMTP 限制,特别是关闭以下设置:

“将传出 SMTP 限制为 root、exim 和 mailman (FKA SMTP Tweak)”

【讨论】:

以上是关于OpenSSL::SSL::SSLError(主机名“smtp.mandrillapp.com”与服务器证书不匹配)的主要内容,如果未能解决你的问题,请参考以下文章

Heroku上的OpenSSL :: SSL :: SSLError [重复]

使用 Ruby on Rails 的 HTTP GET 请求:OpenSSL::SSL::SSLError

带有 fb_auth.exchange_token 的 OpenSSL::SSL::SSLError

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certif

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3/TLS write client hello

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certif