Actions
Feature #13729
closedPATCH: Add Server Name Indication (SNI) support to WEBrick
Description
WEBrick に Server Name Indication (SNI) サポートを追加するパッチです。
よくWEBrickで簡易サーバを立てているのですが、SNIでバーチャルホストを立てたかった(けどできなかった)のでパッチを書きました。
WEBrick::HTTPServer
が元々持っているバーチャルホストの仕組みに乗っかっています。
一応テストも入っています。
Google Chrome + Let's Encryptの証明書(SANではない単一CNの証明書複数)でちゃんと接続できることも確認しました。
usage:
# master (default) server
master = WEBrick::HTTPSerevr.new({
:ServerName => "master.example.com",
:Port => 443,
:SSLEnable => true,
:SSLCertificate => "CN=master.example.com の証明書",
:SSLPrivateKey => "秘密鍵",
})
master.mount_proc("/") { |req, res| res.body = "default host!\n" }
# virtual host
vhost = WEBrick::HTTPServer.new({
:ServerName => "vhost.example.jp", # SNIバーチャルホスト名
:Port => 443, # master serverと同じポート番号を指定
:DoNotListen => true, # true必須
:SSLEnable => true, # true必須
:SSLCertificate => "CN=vhost.example.jp の証明書",
:SSLPrivateKey => "秘密鍵",
})
vhost.mount_proc("/") { |req, res| res.body = "virtual host!\n" }
master.virtual_host(vhost)
master.start
Files
Updated by Anonymous over 7 years ago
- Status changed from Open to Closed
Applied in changeset trunk|r59281.
webrick: add Server Name Indication (SNI)
- lib/webrick/https.rb: servername_cb implementation.
- lib/webrick/ssl.rb: abstract servername_cb.
- test/webrick/test_https.rb: test.
[ruby-dev:50165] [Feature #13729]
Author: Tietew tietew@gmail.com
Updated by Tietew (Toru Iwase) over 7 years ago
ごめんなさい。前回送ったパッチですが、不完全でした。正しくContextを返していませんでした。
テスト時に大ぽかしてSAN証明書を参照していたため、見誤っていました。
そこの修正と、正しい証明書が提示されたことを確認するテストを追加したパッチを追加します。
Updated by hsbt (Hiroshi SHIBATA) over 7 years ago
- Status changed from Closed to Assigned
- Assignee set to normalperson (Eric Wong)
Updated by Anonymous over 7 years ago
- Status changed from Assigned to Closed
Applied in changeset trunk|r59351.
webrick: fix SNI support
- lib/webrick/https.rb: check ssl context of virtual host.
- lib/webrick/ssl.rb: ensure to return ssl context.
- test/webrick/test_https.rb: test returned cert is correct.
[Feature #13729][ruby-dev:50173]
Author: Tietew tietew@gmail.com
Actions
Like0
Like0Like0Like0Like0