我正在写一个独立的脚本,this question解决了我遇到的问题,就像我试图使用的原始海报一样
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
但我没有运气。
在其中一个回复中提到,您可以更改程序以发送不同的客户端问候语。是否可以在ruby脚本中执行此操作?
我目前正在使用ruby 2.0.0-1.9.5并且不想更改我的ruby版本。 如果无法更改客户端问候,是否有任何宝石可以帮助解决此问题?
答案 0 :(得分:1)
OpenSSL :: SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE
但我没有运气。
这似乎没有任何意义。您似乎正在为VERIFY_NONE
分配VERIFY_PEER
。那些是OpenSSL常量,而不是变量。所以你不能这样做。
这些是OpenSSL上下文选项。根据{{3}},您需要使用verify_mode
:
<强> verify_mode 强>
会话验证模式。
有效模式为
VERIFY_NONE
,VERIFY_PEER
,VERIFY_CLIENT_ONCE
,VERIFY_FAIL_IF_NO_PEER_CERT
并在OpenSSL :: SSL上定义
在其中一个回复中提到,您可以更改程序以发送不同的客户端问候语。是否可以在ruby脚本中执行此操作?
ClientHello
有两种类型。一个是旧SSL ClientHello
,另一个是TLS ClientHello
。由于原始SSL规范没有版本控制信息,因此很难判断哪些是正在发送的。据我了解,检查一个特定的字节来告诉使用哪个字节。一些客户和服务器仍然无法很好地处理它。
据我所知,Ruby有一些OpenSSL方法的选项。来自Ruby docs:
new => ctx
new(:TLSv1) => ctx
new("SSLv23_client") => ctx
您希望发送与{1}}对应的ClientHello
。SSLv23_method
。OpenSSL::SSL::SSL_OP_NO_SSLv2
。这提供了最大的兼容性。但是,它启用SSLv2协议及更高版本(SSLv2,SSLv3,TLS1.0,TLS1.1和TLS1.2)
要删除损坏的,弱的和受伤的协议(如SSLv2和SSLv3),您必须设置一些上下文选项。不幸的是,Ruby似乎没有提供{{1}}和其他上下文选项(或者我找不到它们)。请参阅Ruby docs。
所以我认为你现在陷入困境。