Como definir opções de contexto TLS no Ruby (como OpenSSL :: SSL :: SSL_OP_NO_SSLv2)
Ao usar o OpenSSL em C, definimos opções no contexto para remover protocolos fracos e prejudicados, como SSLv2 e SSLv3. Dessl.h
, aqui está uma máscara de bits de algumas das opções úteis:
#define SSL_OP_NO_SSLv2 0x01000000L
#define SSL_OP_NO_SSLv3 0x02000000L
#define SSL_OP_NO_TLSv1 0x04000000L
#define SSL_OP_NO_TLSv1_2 0x08000000L
#define SSL_OP_NO_TLSv1_1 0x10000000L
No entanto, estou tendo problemas para defini-los no Ruby:
if uri.scheme == "https"
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.options = OpenSSL::SSL::SSL_OP_NO_SSLv2 | OpenSSL::SSL::OP_NO_SSLv3 |
OpenSSL::SSL::SSL_OP_NO_COMPRESSION
end
Resulta em:
$ ./TestCert.rb
./TestCert.rb:12:in `<main>': uninitialized constant OpenSSL::SSL::SSL_OP_SSL2 (NameError)
oDocumentos em Ruby para 1.9.3 (e 2.0.0) nem se preocupam em mencioná-lo.
Como alguém define as opções de contexto TLS no Ruby?
Palavras-chave:definindo opções do SSLContext em ruby. Mas não há como anexar o contexto a umhttp
quandohttp.use_ssl = true
.