diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-07 13:37:18 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-07 13:37:18 +0000 |
commit | 2e3b4e0b32b91c79922c75d3aa3566c6d27f9153 (patch) | |
tree | ae79c085810ec9bc78c549acfb02c7f1536f5a3d | |
parent | 21413c79bdb1aef1928f2fc62becac593ae83417 (diff) | |
download | ruby-2e3b4e0b32b91c79922c75d3aa3566c6d27f9153.tar.gz |
* lib/webrick/ssl.rb: Accept string value for SSLCertName. It is used
to invoke ssl server with command line.
[fix GH-1329] Patch by @kerlin
* test/webrick/test_ssl_server.rb: Added test for GH-1329
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | lib/webrick/ssl.rb | 3 | ||||
-rw-r--r-- | test/webrick/test_ssl_server.rb | 14 |
3 files changed, 23 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Sat May 7 22:22:37 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org> + + * lib/webrick/ssl.rb: Accept string value for SSLCertName. It is used + to invoke ssl server with command line. + [fix GH-1329] Patch by @kerlin + * test/webrick/test_ssl_server.rb: Added test for GH-1329 + Sat May 7 21:55:12 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org> * test/webrick/test_ssl_server.rb: Added basic test for `webrick/ssl` diff --git a/lib/webrick/ssl.rb b/lib/webrick/ssl.rb index b072546948..d626e149ec 100644 --- a/lib/webrick/ssl.rb +++ b/lib/webrick/ssl.rb @@ -108,7 +108,8 @@ module WEBrick cert = OpenSSL::X509::Certificate.new cert.version = 2 cert.serial = 1 - name = OpenSSL::X509::Name.new(cn) + name = (cn.kind_of? String) ? OpenSSL::X509::Name.parse(cn) + : OpenSSL::X509::Name.new(cn) cert.subject = name cert.issuer = name cert.not_before = Time.now diff --git a/test/webrick/test_ssl_server.rb b/test/webrick/test_ssl_server.rb index bbc30cf6d4..de685bb6d3 100644 --- a/test/webrick/test_ssl_server.rb +++ b/test/webrick/test_ssl_server.rb @@ -25,4 +25,18 @@ class TestWEBrickSSLServer < Test::Unit::TestCase sock.close } end + + def test_self_signed_cert_server_with_string + config = { + :SSLEnable => true, + :SSLCertName => "/C=JP/O=www.ruby-lang.org/CN=Ruby" + } + TestWEBrick.start_server(Echo, config){|server, addr, port, log| + sock = OpenSSL::SSL::SSLSocket.new(TCPSocket.new(addr, port)) + sock.connect + sock.puts(server.ssl_context.cert.subject.to_s) + assert_equal("/C=JP/O=www.ruby-lang.org/CN=Ruby\n", sock.gets, log.call) + sock.close + } + end end |