我正在尝试通过TCP套接字连接到旧的,未维护的游戏服务器。当我尝试使用OpenSSL和Socketry这样做时,出现以下错误。
主机名“ xxx”与服务器证书不匹配
这就是我的代码的工作方式。
ssl_context = OpenSSL::SSL::SSLContext.new
ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
ssl_context.ciphers = "AES128-SHA"
ssl_context.cert = OpenSSL::X509::Certificate.new(File.open("certificate.crt"))
ssl_context.key = OpenSSL::PKey::RSA.new(File.open("certificate.key"))
socket = Socketry::SSL::Socket.new(ssl_context: ssl_context)
socket.connect(address, port)
我不得不将密码强制使用AES128-SHA,否则我将得到一个不同的错误。
SSL_connect返回= 1 errno = 0状态=错误:dh密钥太小(OpenSSL :: SSL :: SSLError)
如何绕过这些错误并仅强制连接到所述服务器?证书本身已在10年前过期。
答案 0 :(得分:0)
Socketry并没有包含太多与此相关的文档,因此您需要参考源代码。根据您要尝试执行的操作,可以尝试以下操作之一:
verify_hostname: false
传递到Socket#connect。其中至少有一个应该解决您的特定问题。如果不是这样,则该来源会提供您可能会猴子打补丁或针对用例进行优化的其他地方。