2014-03-25 3 views
1

나는 독립 스크립트를 작성하고 this question 주소 나는 데 문제가, 원래의 포스터처럼 나는루비 스크립트에서 클라이언트 안녕을 설정하는 방법이 있습니까?

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

을 사용하려고하지만 그와 운이 없었하고있다.

응답 중 하나에서 다른 클라이언트를 보내도록 프로그램을 변경할 수 있다고 언급되었습니다. 안녕하세요. 루비 스크립트에서이 작업을 수행 할 수 있습니까?

현재 루비 2.0.0-1.9.5를 사용하고 있으며 루비 버전을 변경하고 싶지 않습니다. 클라이언트 안녕을 변경할 수없는 경우이 문제를 해결하는 데 도움이되는 보석이 있습니까?

+1

"클라이언트 안녕하세요 설정"이란 정확히 무엇을 의미합니까? – jww

답변

1

은 OpenSSL :: SSL ::위한 verify_peer =에는 OpenSSL : SSL :: VERIFY_NONE

그러나 나는 그와 운이 없었다.

이는 의미가없는 것처럼 보입니다. VERIFY_NONEVERIFY_PEER에게 할당하는 것으로 보입니다. 그것들은 변수가 아닌 OpenSSL 상수입니다. 그래서 당신은 그렇게 할 수 없습니다.


이는 OpenSSL 컨텍스트 옵션입니다. Ruby docs에 따르면, 당신은 verify_mode로를 설정해야합니다

verify_mode

세션 검증 모드.

유효한 모드는 VERIFY_NONE, VERIFY_PEER, VERIFY_CLIENT_ONCE, VERIFY_FAIL_IF_NO_PEER_CERT 그리고 그것은 당신이 보낼 수있는 프로그램 수 변화 될 수있는 응답 중 하나에서 언급


은 OpenSSL : SSL에 정의 된 다른 고객 안녕하세요. 루비 스크립트에서이 작업을 수행 할 수 있습니까?

ClientHello에는 두 가지 유형이 있습니다. 하나는 이전 SSL ClientHello이고 다른 하나는 TLS ClientHello입니다. 원래 SSL 사양에는 버전 정보가 없었기 때문에 어느 버전이 전송되었는지 알기가 어려웠습니다. 내가 이해하는 한, 어떤 바이트가 사용되었는지 알려주기 위해 검사된다. 일부 클라이언트와 서버는 여전히 잘 처리하지 못합니다.

내가 아는 한 Ruby에는 OpenSSL 메소드에 대한 몇 가지 옵션이 있습니다. Ruby docs에서 :

new => ctx 
new(:TLSv1) => ctx 
new("SSLv23_client") => ctx 

당신은 OpenSSL의 SSLv23_method에 해당하는 ClientHello을 보내려고합니다. 이것은 대부분의 호환성을 제공합니다. 그러나 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)을 참조하십시오.

그래서 나는 지금 당신이 붙어 있다고 생각합니다.

관련 문제