aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-07 13:37:18 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-07 13:37:18 +0000
commita6e805f75e308d2b29450b1eb5c0fe960aa412de (patch)
treeae79c085810ec9bc78c549acfb02c7f1536f5a3d
parentd8e22fa1dd161cfed66574f3f4b9d36f2c4c27ab (diff)
downloadruby-a6e805f75e308d2b29450b1eb5c0fe960aa412de.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--ChangeLog7
-rw-r--r--lib/webrick/ssl.rb3
-rw-r--r--test/webrick/test_ssl_server.rb14
3 files changed, 23 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 0ebd63ef37..ecec958b62 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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