gpt4 book ai didi

Ruby Sinatra 在没有 PEM 和 OpenSSL::SSL::VERIFY_NONE 的情况下创建发布请求

转载 作者:数据小太阳 更新时间:2023-10-29 06:50:52 25 4
gpt4 key购买 nike

我尝试使用 SSL 创建 POST 请求,但没有 OpenSSL::SSL::VERIFY_NONE,因为它打开了安全攻击并且没有 PEM 证书。但是我遇到了问题,我发送 POST 请求的 ruby​​ 代码:

post '/test/test1' do
cross_origin
post_data = request.body.read
res_Data = JSON.parse(post_data)
userName = res_Data['username']

@responseFromServer=''
uri = URI('https://test.com/test1')
Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https',
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
request = Net::HTTP::Post.new uri.request_uri
request.basic_auth 'aa', 'bb'
request.body = {'username' =>userName}.to_json
response = http.request request
@responseFromServer = response.body.to_s
end
newJson = JSON.parse(@responseFromServer)

status_msg = newJson['status']['status_msg']
if (status_msg == "Success")
return 'true'
end
return 'false'
end

这是有效的方法,但他使用 OpenSSL::SSL::VERIFY_NONE。如何在没有 OpenSSL::SSL::VERIFY_NONE 和 PEM 证书的情况下创建发送 POST 请求的方法?

编辑SSL/HTTPS 请求更新:这个代码示例不好的原因有很多。如果您必须使用服务器证书来验证您所连接的服务器的身份,那么它会引入潜在的安全漏洞。不过,该问题已得到修复!

require "net/https"
require "uri"

uri = URI.parse("https://secure.com/")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)
response.body
response.status
response["header-here"] # All headers are lowercase

带有 PEM 证书的 SSL/HTTPS 请求

require "net/https"
require "uri"

uri = URI.parse("https://secure.com/")
pem = File.read("/path/to/my.pem")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.cert = OpenSSL::X509::Certificate.new(pem)
http.key = OpenSSL::PKey::RSA.new(pem)
http.verify_mode = OpenSSL::SSL::VERIFY_PEER

request = Net::HTTP::Get.new(uri.request_uri)

我的问题:如何在没有 PEM 和 OpenSSL::SSL::VERIFY_NONE 的情况下创建 POST 方法?

最佳答案

这个问题很有误导性,但我尽力弄明白了。这是我的建议:

是否要连接到只能通过 https 访问的服务并且不关心证书是否有效?

然后你可以在初始化Net::HTTP客户端时使用:verify_mode => OpenSSL::SSL::VERIFY_NONE。您将拥有某种传输安全性,但您无法确定与您通话的服务器就是您认为的那台服务器。你很脆弱。

是否要连接到同时通过 https 和 http 可用的服务,并且不关心传输安全性?

那么你应该使用 http://... 端点。

您想连接到服务并且关心传输安全吗?

那么您绝对应该使用 https://... 端点。不要覆盖 :verify_mode!如果您收到证书验证错误,请确保您的系统上安装了正确的证书颁发机构。

关于Ruby Sinatra 在没有 PEM 和 OpenSSL::SSL::VERIFY_NONE 的情况下创建发布请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com