Ruby on rails Rails 3 action mailer产品OpenSSL::SSL::SSLError:主机名与服务器证书不匹配

Ruby on rails Rails 3 action mailer产品OpenSSL::SSL::SSLError:主机名与服务器证书不匹配,ruby-on-rails,ruby-on-rails-3.2,openssl,actionmailer,Ruby On Rails,Ruby On Rails 3.2,Openssl,Actionmailer,在生产服务器中发送电子邮件时,我面临打开SSL证书错误的问题。在开发模式下,一切正常。下面是我在生产模式下的配置代码 config.action_mailer.raise_delivery_errors = true config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.gmail.com", :port => 587,

在生产服务器中发送电子邮件时,我面临打开SSL证书错误的问题。在开发模式下,一切正常。下面是我在生产模式下的配置代码

config.action_mailer.raise_delivery_errors = true

config.action_mailer.delivery_method = :smtp

config.action_mailer.smtp_settings = {
 :address => "smtp.gmail.com",
 :port => 587,  
 :authentication => "plain",
 :enable_starttls_auto => true,
 :user_name => 'xxxxxxx',
 :password => 'xxxxx',
 :openssl_verify_mode  => 'none'
}
我已经研究了中的解决方案,但这并不能解决我的问题


有人能帮忙吗?

尝试在smtp\u设置中添加域名

:domain => 'www.your-domain-name.com'

openssl\u验证\u模式=>“无”
应该可以工作。确保它没有被覆盖的地方。遗憾的是,关闭主机名匹配是邮件中最好的选择,因为另一个选择是不加密。机会主义加密比不加密好。像首次使用信任(Trust On First Use,TOFU)这样的安全多样化策略会有所帮助,但这些系统很少得到实施。谢谢你的评论。实际上,我也尝试过禁用加密,方法是:enable\u starttls\u auto=>false,但仍然得到相同的错误。不,您想要
enable\u starttls\u auto=>true
。这让你得到了机会主义加密。问题似乎出在主机名验证上,这似乎很奇怪,因为谷歌证书的格式很好(不像托管公司那样不注意细节)。您的问题在别处。证书中有什么主机名?是否有拦截代理在起作用?Ruby是遍历SAN,还是只查看CN?请尝试查看证书:
$openssl s_client-tls1-starttls smtp-connect smtp.gmail.com:587-servername smtp.gmail.com 2>/dev/null | openssl x509-text-noout