@@ -285,4 +285,36 @@ def test_tlsext_hostname
285285 end
286286 end
287287
288+ CUSTOM_CIPHERS = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:" +
289+ "ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:" +
290+ "ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:" +
291+ "ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:" +
292+ "DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:" +
293+ "DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:" +
294+ "AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:" +
295+ "!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA"
296+
297+ def test_set_custom_params
298+ ops = OpenSSL ::SSL ::OP_ALL
299+ ops &= ~OpenSSL ::SSL ::OP_DONT_INSERT_EMPTY_FRAGMENTS if defined? ( OpenSSL ::SSL ::OP_DONT_INSERT_EMPTY_FRAGMENTS )
300+ ops |= OpenSSL ::SSL ::OP_NO_COMPRESSION if defined? ( OpenSSL ::SSL ::OP_NO_COMPRESSION )
301+ ops |= OpenSSL ::SSL ::OP_NO_SSLv2
302+ ops |= OpenSSL ::SSL ::OP_NO_SSLv3
303+
304+ params = { :ssl_version => "TLSv1_2" , :ciphers => CUSTOM_CIPHERS , :options => ops }
305+ params . merge! ( :verify_mode => OpenSSL ::SSL ::VERIFY_NONE )
306+
307+ ctx_proc = Proc . new { |ctx , ssl | ctx . set_params ( params ) }
308+
309+ start_server ( OpenSSL ::SSL ::VERIFY_NONE , true , :ctx_proc => ctx_proc ) do |server , port |
310+ context = OpenSSL ::SSL ::SSLContext . new . tap { |ctx | ctx . set_params ( params ) }
311+ socket = TCPSocket . new ( "127.0.0.1" , port )
312+ client = OpenSSL ::SSL ::SSLSocket . new socket , context
313+
314+ client . connect
315+
316+ client . close rescue nil
317+ end
318+ end
319+
288320end
0 commit comments