@@ -285,4 +285,36 @@ def test_tlsext_hostname
285
285
end
286
286
end
287
287
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
+
288
320
end
0 commit comments