2014-03-25 119 views
1

我寫一個腳本獨立和this question地址,我遇到的問題,像原來的海報我嘗試使用有沒有辦法在ruby腳本中設置客戶端hello?

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 

但我有與沒有運氣。

在其中一個回覆中提到您可能可以更改程序來發送不同的客戶端問候語。在ruby腳本中可以做到這一點嗎?

我目前使用的是ruby 2.0.0-1.9.5,不想更改我的ruby版本。 如果更改客戶端hello是不可能的,有沒有任何寶石可以幫助解決這個問題?

+1

你是什麼意思,「設置客戶端你好」? – jww

回答

1

的OpenSSL :: SSL :: VERIFY_PEER = OpenSSL的:: SSL :: VERIFY_NONE

但我有與沒有運氣。

這似乎沒有任何意義。看來您正在將VERIFY_NONE分配到VERIFY_PEER。這些是OpenSSL常量,而不是變量。所以你不能那樣做。


這些是OpenSSL上下文選項。按照Ruby docs,你需要與verify_mode設置它們:

verify_mode

會話驗證模式。

有效模式VERIFY_NONEVERIFY_PEERVERIFY_CLIENT_ONCEVERIFY_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 

要發送一個ClientHello相當於OpenSSL的SSLv23_method。這提供了最大的兼容性。但是,它啓用SSLv2協議及更高版本(SSLv2,SSLv3,TLS1.0,TLS1.1和TLS1.2)

要刪除破損,脆弱和受傷的協議(如SSLv2和SSLv3),必須設置一些上下文選項。不幸的是,Ruby似乎沒有提供OpenSSL::SSL::SSL_OP_NO_SSLv2和其他上下文選項(或者我找不到它們)。見How to set TLS context options in Ruby (like OpenSSL::SSL::SSL_OP_NO_SSLv2)

所以我認爲你現在被卡住了。

相關問題