OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
Но мне с этим не повезло.
Кажется, это не имеет никакого смысла. Похоже, вы назначаете VERIFY_NONE
VERIFY_PEER
. Это константы OpenSSL, а не переменные. Так что вы не можете этого сделать.
Это параметры контекста OpenSSL. Согласно документации Ruby, вам нужно установить их с помощью verify_mode
:
проверить_режим
Режим проверки сеанса.
Допустимые режимы: VERIFY_NONE
, VERIFY_PEER
, VERIFY_CLIENT_ONCE
, VERIFY_FAIL_IF_NO_PEER_CERT
, определенные в OpenSSL::SSL.
В одном из ответов упоминается, что вы можете изменить программу, чтобы отправить приветствие другому клиенту. Можно ли это сделать в рубиновом скрипте?
Есть два типа ClientHello
s. Один — это старый SSL ClientHello
, а другой — TLS ClientHello
. Поскольку исходная спецификация SSL не содержала информации о версии, было трудно определить, какая версия была отправлена. Насколько я понимаю, проверяется конкретный байт, чтобы определить, какой из них используется. Некоторые клиенты и серверы по-прежнему не справляются с этим.
Насколько мне известно, в Ruby есть несколько опций для метода OpenSSL. Из документов по Ruby а>:
new => ctx
new(:TLSv1) => ctx
new("SSLv23_client") => ctx
Вы хотите отправить ClientHello
, который соответствует SSLv23_method
OpenSSL. Это обеспечивает максимальную совместимость. Однако он включает протокол SSLv2 и выше (SSLv2, SSLv3, TLS1.0, TLS1.1 и TLS1.2).
Чтобы удалить сломанные, слабые и поврежденные протоколы (такие как SSLv2 и SSLv3), вы должны установить некоторые параметры контекста. К сожалению, Ruby не предлагает OpenSSL::SSL::SSL_OP_NO_SSLv2
и другие параметры контекста (или я не смог их найти). См. Как установить параметры контекста TLS в Ruby (например, OpenSSL::SSL::SSL_OP_NO_SSLv2)< /а>.
Так что я думаю, что вы застряли в данный момент.
person
jww
schedule
25.03.2014