如何获得有关已关闭的导致错误的SSL连接的信息?

我在服务器上有以下Ruby代码:

#!/usr/bin/env ruby

require "socket"
require "openssl"

cert_path = Dir["/etc/letsencrypt/live/example.com/fullchain.pem"].first
key_path = Dir["/etc/letsencrypt/live/example.com/privkey.pem"].first
chain_path = Dir["/etc/letsencrypt/live/example.com/chain.pem"].first
context = OpenSSL::SSL::SSLContext.new
context.cert = OpenSSL::X509::Certificate.new( File.read( cert_path ))
context.key = OpenSSL::PKey::RSA.new( File.read( key_path ))
context.extra_chain_cert = [ OpenSSL::X509::Certificate.new( File.read( chain_path )) ]

port = 4444
t = TCPServer.new( port )
s = OpenSSL::SSL::SSLServer.new( t,context )

begin
    r = s.accept
rescue
    # get client ip here
    p r.methods.sort
end

我可以使用以下命令很好地连接到服务器:

curl https://example.com:4444

如果我故意这样导致错误(请注意使用http代替https):

curl http://example.com:4444

然后我似乎无法从任何地方获取客户端的IP地址,因为连接已经关闭。我受到类似这样的许多请求的攻击,并且想对这些IP地址进行防火墙保护,只有我需要这些地址才能这样做。知道如何获取导致错误的远程客户端的IP地址吗?捕获异常并打印错误对象不包含任何有用的信息。谢谢。

xiangmuwei 回答:如何获得有关已关闭的导致错误的SSL连接的信息?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3129789.html

大家都在问