Skip to content

Commit a6e805f

Browse files
committed
* lib/webrick/ssl.rb: Accept string value for SSLCertName. It is used
to invoke ssl server with command line. [fix rubyGH-1329] Patch by @kerlin * test/webrick/test_ssl_server.rb: Added test for rubyGH-1329 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54941 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent d8e22fa commit a6e805f

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

ChangeLog

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
Sat May 7 22:22:37 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org>
2+
3+
* lib/webrick/ssl.rb: Accept string value for SSLCertName. It is used
4+
to invoke ssl server with command line.
5+
[fix GH-1329] Patch by @kerlin
6+
* test/webrick/test_ssl_server.rb: Added test for GH-1329
7+
18
Sat May 7 21:55:12 2016 SHIBATA Hiroshi <hsbt@ruby-lang.org>
29

310
* test/webrick/test_ssl_server.rb: Added basic test for `webrick/ssl`

lib/webrick/ssl.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ def create_self_signed_cert(bits, cn, comment)
108108
cert = OpenSSL::X509::Certificate.new
109109
cert.version = 2
110110
cert.serial = 1
111-
name = OpenSSL::X509::Name.new(cn)
111+
name = (cn.kind_of? String) ? OpenSSL::X509::Name.parse(cn)
112+
: OpenSSL::X509::Name.new(cn)
112113
cert.subject = name
113114
cert.issuer = name
114115
cert.not_before = Time.now

test/webrick/test_ssl_server.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,18 @@ def test_self_signed_cert_server
2525
sock.close
2626
}
2727
end
28+
29+
def test_self_signed_cert_server_with_string
30+
config = {
31+
:SSLEnable => true,
32+
:SSLCertName => "/C=JP/O=www.ruby-lang.org/CN=Ruby"
33+
}
34+
TestWEBrick.start_server(Echo, config){|server, addr, port, log|
35+
sock = OpenSSL::SSL::SSLSocket.new(TCPSocket.new(addr, port))
36+
sock.connect
37+
sock.puts(server.ssl_context.cert.subject.to_s)
38+
assert_equal("/C=JP/O=www.ruby-lang.org/CN=Ruby\n", sock.gets, log.call)
39+
sock.close
40+
}
41+
end
2842
end

0 commit comments

Comments
 (0)