Help us understand the problem. What is going on with this article?

WEBRickで作ったなんちゃってWeb APIサーバーをなんちゃってHTTPS対応させる

More than 1 year has passed since last update.

前回までのあらすじ

前回「 開発用なんちゃってWeb APIサーバーを作ってみた 」は、WEBRickを使って開発用のダミーの Web APIサーバーを作るお話でした。

今回のお話

今回は小ネタですが、これを HTTPS対応させてみたいと思います。
前回のソースコードに手を加えていきましょう。

https 用のライブラリを require する

まずは、 https の通信ができるように必要なライブラリを require します。

ueb_api.rb
require 'webrick'
require 'webrick/https' # この行を追加する
require 'json'

SSLの切り替えができるようにする

UebAPIinitialize メソッドを修正して ssl を使うかどうか指定できるようにします。

ueb_api.rb
  def initialize(bind_address: '127.0.0.1', port: 18_080, ssl_enable: false)
    @srv = WEBrick::HTTPServer.new(
      BindAddress: bind_address,
      Port: port,
      SSLEnable: ssl_enable, # この行を追加
      SSLCertName: [['CN', WEBrick::Utils.getservername]], # この行を追加
    )
    @mount_procs = {}
  end
  • initialize メソッドに、 :ssl_enable 引数を追加します。 デフォルトは、 false です。
  • WEBRick::HTTPServer.new メソッドを呼び出す時に、 :SSLEnable:SSLCertName の2つの引数を指定します。
  • :SSLEnablefalse の時は、 HTTPS ではなく、 HTTP として動作します。
  • :SSLCertName を上記のように指定しておけば、起動時に、自前で証明書が作成されるようです。

UebAPI オブジェクト生成箇所を修正する

UebAPI オブジェクトを生成させるときに、 :ssl_enable パラメータを指定します。

ueb_api.rb
# ssl_enable: true を指定して HTTPS として動作させる
# ssl_enable: false の時、 :ssl_enable を省略した時は、HTTPで動作する。
srv = UebAPI.new(ssl_enable: true)

まとめ

小ネタですがHTTPS対応させてみました。

suketa
Rails初心者なRubyコミッター
ruby-dev
Ruby開発はRuby on Railsをコア技術とし、Web系から基幹系まで多様な開発に携わっています。
https://www.ruby-dev.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした