当前位置: 首页 > 知识库问答 >
问题:

Rails6.1.4.1:证书验证失败(无法获得本地发行者证书)(OpenSSL::SSL::SSLError)

樊奇思
2023-03-14

Rails/Ruby/OpenSSL不允许我发送电子邮件,为什么?

控制台中的测试:

irb(main):001:0> @webmessage = Webmessage.new(subject: "Hi there", body: "Bye now.", email: "me@me.com", firstname: "Me")
=> #<Webmessage:0x000055bee43fa1d0 id: nil, subject: "Hi there", body: "Bye now.", email: "me@me.com", firstname: "Me">

irb(main):002:0> ApplicationMailer.with(webmessage: @webmessage).email_webmessage.deliver_now
  Rendered application_mailer/email_webmessage.html.erb within layouts/mailer (Duration: 3.2ms | Allocations: 810)
  Rendered layout layouts/mailer.html.erb (Duration: 4.3ms | Allocations: 1044)
Delivered mail 614243a5a9582_9b0ab4874e5@host.mail (52.1ms)
/home/user/.rbenv/versions/3.0.1/lib/ruby/3.0.0/net/protocol.rb:46:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (unable to get local issuer certificate) (OpenSSL::SSL::SSLError)

结果错误:

“SSL\u connect返回=1 errno=0 state=错误:证书验证失败(无法获取本地颁发者证书)(OpenSSL::SSL::SSLError)”

我的证书路径:

$ echo $SSL_CERT_DIR
/etc/ssl/certs

$ echo $SSL_CERT_FILE
/etc/ssl/certs/ca-certificates.crt

我的环境:

  • 铁轨6.1.4.1
  • 红宝石3.0.1p64
  • OpenSSL 1.1.1f

编辑:这将建立工作连接:

$ openssl s_client -connect example.com:443 -CAfile /etc/ssl/certs/ca-certificates.crt


irb(main):001:0> require 'open-uri'
=> true

irb(main):002:0> p open(URI.open('https://google.com'))
#<File:/tmp/open-uri20210915-4444-phdsb>
=> #<File:/tmp/open-uri20210915-4444-phdsb>

共有1个答案

汪博达
2023-03-14

这是给子孙后代的解决方案:

事实证明,Rails需要在配置/环境/production.rb中的以下条目之一才能使上述错误消失:

config.force_ssl = true

config.action_mailer.default_url_options = {
    protocol: 'https',
    host: "www.mydomain.com"
}

config.action_mailer.delivery_method = :sendmail
config.action_mailer.sendmail_settings = {
    location: '/usr/sbin/sendmail',
    arguments: '-i -t'
}
 类似资料:
  • 您好,我在构建python映像时遇到问题 错误说, 但是当升级pip时,同样的错误显示。 错误:由于环境原因无法安装程序包错误:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):url超过最大重试次数:/packages/ac/cf/0cc542fc93de2f3b9b53cb979c7d118cffb93204afb4629a

  • 我正在尝试使用python从web获取数据。我导入了urllib。请求包,但在执行时,我得到错误: 我正在Mac OS High Sierra上使用Python 3.7 当我将URL更改为“http”时,我能够获取数据。但是,我相信,这可以避免检查SSL证书。 因此,我在互联网上查找并找到了一个解决方案:运行 这解决了我的问题。但是我对SSL之类的东西一无所知。你能帮我理解它到底做了什么来解决我的

  • 我正在使用Py魅力和python 3.8和最新版本的不和谐。我试图运行这个脚本,但得到了这个错误。有人能帮忙吗? -------以下------ 错误 /Users/mellie/PycharmProjects/Dominations/venv/bin/python/Users/mellie/PycharmProjects/Domi。py回溯(最后一次调用):文件“/Users/mellie/Py

  • 我正在Windows7上运行PHP版本5.6.3作为XAMPP的一部分。 当我尝试使用Mandrill API时,我得到以下错误: 未捕获异常“Mandrill_HttpError”,消息为“API调用消息/send-template失败:SSL证书问题:无法获取本地颁发者证书” 我已经尝试了在StackOverflow上读到的所有内容,包括向php.ini文件添加以下内容: 当然可以从http:

  • 问题内容: 我正在Windows 7上将PHP版本5.6.3作为XAMPP的一部分运行。 当我尝试使用Mandrill API时,出现以下错误: 消息“ API调用消息/发送模板失败”的未捕获异常“ Mandrill_HttpError”:SSL证书问题:无法获取本地颁发者证书 我已经尝试了我在StackOverflow上阅读的所有内容,包括将以下内容添加到php.ini文件中: 当然,还可以从h

  • 我正在Windows服务器2016上的wamp上使用洋红色社区版2.2。每当我尝试登录以通过系统同步您的Magento市场购买时 “SSL 证书问题:无法获取本地颁发者证书” 我尝试了这个论坛中其他一些线程中提供的解决方案来下载cacert。pem并在php.ini中执行以下设置 curl . cainfo = " C:\ wamp 64 \ bin \ PHP \ PHP 7 . 1 . 9 \