ActionMailer SMTP“证书验证失败”

时间:2016-04-09 15:29:23

标签: ruby-on-rails ruby ssl smtp

我想从我的Rails Web应用程序发送电子邮件,我不想禁用TLS证书验证。但是由于某种原因,即使服务器证书有效,它仍会因“SSLv3读取服务器证书B:证书验证失败”而失败。

我使用openssl s_client(使用/etc/ssl/certs/ca-certificates.crt)加倍检查,并在rails控制台中运行以下内容也可以正常运行。

smtp = Net::SMTP.new(host, port)
smtp.enable_tls
smtp.start("localhost", username, password, :login) do |smtp|
  smtp.send_message msgstr, from, to
end

服务器有Rails 4.2.6和Ruby 2.3.0

config.action_mailer.smtp_setting = {
    address: 
    port: 465,
    user_name: 
    password: 
    authentication: :login,
    openssl_verify_mode: OpenSSL::SSL::VERIFY_PEER,
    enable_starttls_auto: false,
    ssl: true
}

1 个答案:

答案 0 :(得分:0)

这个Rails配置适用于我(使用Ruby 2.2.2和Rails 5):

ActionMailer::Base.smtp_setting = {
  ...
  enable_starttls_auto: true,
  openssl_verify_mode: OpenSSL::SSL::VERIFY_PEER,
  openssl_verify_depth: 3,  # if your CA is a sub signer
  ca_file: "/etc/ssl/certs/ca-certificates.crt",
  ...
}