9
Go to list of users who liked
7
Share on X(Twitter)
Share on Facebook
More than 5 years have passed since last update.
Sinatraでローカル環境のWEBrickをHTTPSで動かす
Last updated atPosted at 2017-08-23
TL;DR
- Sinatra + WEBrick + HTTPS
- WEBrickは起動時のオプションで下記を指定すればよい
SSLEnable: trueSSLCertificate: [['CN', WEBrick::Utils.getservername]]1
- SinatraからWEBrick起動時のオプションを渡すには
set :server_settingsを使う
環境
- Windows10
- ruby 2.4.1p111 (2017-03-22 revision 58053) [x64-mingw32]
- sinatra 1.4.8
- OSX
- ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]
- sinatra 2.0.0
なお、Sinatraはクラシックスタイルでの利用
鍵の作成
下記を参考に作成。
Creating a Self-Signed SSL Certificate | Heroku Dev Center
ただ、最終的にWEBrickで自動作成するなら不要。
Sinatraでのサーバへの設定
set:server_settings,optionsとすればいいので下記の感じに。
ifsettings.development?require'webrick/https'require'openssl'ssl_options={SSLEnable:true,SSLCertificate:OpenSSL::X509::Certificate.new(File.open('./server.crt').read),SSLPrivateKey:OpenSSL::PKey::RSA.new(File.open('./server.key').read)}set:server_settings,ssl_optionsendserver.crtとserver.keyは起動前に所定の場所に配置する- ただし、WEBrickで自動作成するなら不要
if settings.development?は本番では必要ないための分岐
WEBrickで証明書を自動作成するようにする
- Sinatra(WEBrick)でsslサーバをたてる
初期起動時に鍵を自動生成するという点の参考にさせて頂くWEBrick::Utils::create_self_signed_certってのがあることに気がつく- WEBrickのソースを眺めてみることにした
- https://github.com/ruby/ruby/blob/ruby_2_4/lib/webrick.rb#L88-L121
- 普通にHTTPSの場合について書いてあった
SSLEnableをtrueにしてSSLCertNameを[['CN', WEBrick::Utils.getservername]]とかにする- 起動のたびに証明書が再作成される
- 事前作成したものを使用する場合あ先述の方法でOK
- Sinatra + WEBrick + HTTPS
- 以上をもとに必要最低限のコードを書いてみた
webrick.rb記載のように[%w[CN localhost]]でもいい。↩
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme