Rails 有效证书上的 SSL 证书错误
Rails SSL certificate error on valid certificate
我有一个小型 Rails 应用程序,可以在我们的平台上执行各种检查,并在出现问题时向我发送电子邮件。一切 运行 都很好,直到今天我开始收到有关以下错误的警报:
SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate has expired)
现在的问题是有问题的证书是有效的,它会自动更新(让我们加密)并且这段代码已经有几年没有被触及了,之前从未有过任何问题,突然间这种情况开始发生。
抛出异常的代码:
def get_request url
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
#more than 10 seconds this is too slow
http.open_timeout = 10
http.read_timeout = 10
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
if response.code.to_i == 200
return true
else
puts "Failed to GET #{url}: #{response.code.to_i}"
return false
end
end
如果我在浏览器中打开网站,它会显示安全连接没有问题,并显示正在使用有效证书,此外,如果我检查 certbot
,我会得到以下信息:Expiry Date: 2021-11-22 17:48:58+00:00 (VALID: 52 days)
这么明显证书是有效的,为什么突然 rails 对此大发雷霆?
请注意,我已经重新启动了 Nginx 以防万一,但这并没有帮助。
其他信息:Ubuntu 16.04.5,OpenSSL 1.0.2g 2016 年 3 月 1 日,Rails 4.2,Ruby 2.6.5
编辑:
这个错误也会发生在另一个 url 上,它也有一个有效的证书。
编辑 2:
我已经确定了问题,它与 Let's Encrypt DST Root CA X3 已过期有关。很多人都在处理这个问题,我会在找到解决方案后报告。
因此,在通读了 Let's Encrypt 社区的 long thread 之后,我的案例最终的解决方案是删除 DST Root CA X3
证书:
sudo rm /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
sudo update-ca-certificates
之后 openssl 不再有错误。
我有一个小型 Rails 应用程序,可以在我们的平台上执行各种检查,并在出现问题时向我发送电子邮件。一切 运行 都很好,直到今天我开始收到有关以下错误的警报:
SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate has expired)
现在的问题是有问题的证书是有效的,它会自动更新(让我们加密)并且这段代码已经有几年没有被触及了,之前从未有过任何问题,突然间这种情况开始发生。
抛出异常的代码:
def get_request url
uri = URI.parse(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
#more than 10 seconds this is too slow
http.open_timeout = 10
http.read_timeout = 10
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
if response.code.to_i == 200
return true
else
puts "Failed to GET #{url}: #{response.code.to_i}"
return false
end
end
如果我在浏览器中打开网站,它会显示安全连接没有问题,并显示正在使用有效证书,此外,如果我检查 certbot
,我会得到以下信息:Expiry Date: 2021-11-22 17:48:58+00:00 (VALID: 52 days)
这么明显证书是有效的,为什么突然 rails 对此大发雷霆?
请注意,我已经重新启动了 Nginx 以防万一,但这并没有帮助。
其他信息:Ubuntu 16.04.5,OpenSSL 1.0.2g 2016 年 3 月 1 日,Rails 4.2,Ruby 2.6.5
编辑:
这个错误也会发生在另一个 url 上,它也有一个有效的证书。
编辑 2:
我已经确定了问题,它与 Let's Encrypt DST Root CA X3 已过期有关。很多人都在处理这个问题,我会在找到解决方案后报告。
因此,在通读了 Let's Encrypt 社区的 long thread 之后,我的案例最终的解决方案是删除 DST Root CA X3
证书:
sudo rm /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
sudo update-ca-certificates
之后 openssl 不再有错误。