@@ -242,19 +242,6 @@ def test_certificate_verify_failure
242
242
assert_match ( /certificate verify failed/ , ex . message )
243
243
end
244
244
245
- def test_identity_verify_failure
246
- # the certificate's subject has CN=localhost
247
- http = Net ::HTTP . new ( HOST_IP , config ( "port" ) )
248
- http . use_ssl = true
249
- http . cert_store = TEST_STORE
250
- @log_tester = lambda { |_ | }
251
- ex = assert_raise ( OpenSSL ::SSL ::SSLError ) {
252
- http . request_get ( "/" ) { |res | }
253
- }
254
- re_msg = /certificate verify failed|hostname \" #{ HOST_IP } \" does not match/
255
- assert_match ( re_msg , ex . message )
256
- end
257
-
258
245
def test_timeout_during_SSL_handshake
259
246
bug4246 = "expected the SSL connection to have timed out but have not. [ruby-core:34203]"
260
247
@@ -302,3 +289,42 @@ def test_max_version
302
289
end
303
290
304
291
end if defined? ( OpenSSL ::SSL )
292
+
293
+ class TestNetHTTPSIdentityVerifyFailure < Test ::Unit ::TestCase
294
+ include TestNetHTTPUtils
295
+
296
+ def self . read_fixture ( key )
297
+ File . read ( File . expand_path ( "../fixtures/#{ key } " , __dir__ ) )
298
+ end
299
+
300
+ HOST = 'localhost'
301
+ HOST_IP = '127.0.0.1'
302
+ CA_CERT = OpenSSL ::X509 ::Certificate . new ( read_fixture ( "cacert.pem" ) )
303
+ SERVER_KEY = OpenSSL ::PKey . read ( read_fixture ( "server.key" ) )
304
+ SERVER_CERT = OpenSSL ::X509 ::Certificate . new ( read_fixture ( "server.crt" ) )
305
+ DHPARAMS = OpenSSL ::PKey ::DH . new ( read_fixture ( "dhparams.pem" ) )
306
+ TEST_STORE = OpenSSL ::X509 ::Store . new . tap { |s | s . add_cert ( CA_CERT ) }
307
+
308
+ CONFIG = {
309
+ 'host' => HOST_IP ,
310
+ 'proxy_host' => nil ,
311
+ 'proxy_port' => nil ,
312
+ 'ssl_enable' => true ,
313
+ 'ssl_certificate' => SERVER_CERT ,
314
+ 'ssl_private_key' => SERVER_KEY ,
315
+ 'ssl_tmp_dh_callback' => proc { DHPARAMS } ,
316
+ }
317
+
318
+ def test_identity_verify_failure
319
+ # the certificate's subject has CN=localhost
320
+ http = Net ::HTTP . new ( HOST_IP , config ( "port" ) )
321
+ http . use_ssl = true
322
+ http . cert_store = TEST_STORE
323
+ @log_tester = lambda { |_ | }
324
+ ex = assert_raise ( OpenSSL ::SSL ::SSLError ) {
325
+ http . request_get ( "/" ) { |res | }
326
+ }
327
+ re_msg = /certificate verify failed|hostname \" #{ HOST_IP } \" does not match/
328
+ assert_match ( re_msg , ex . message )
329
+ end
330
+ end if defined? ( OpenSSL ::SSL )
0 commit comments