SSL証明書設置 (Apache2.4 + mod_ssl)
SSL暗号化(https
)通信のため、SSL証明書の設置が必要となった。今回の環境は以下。
前提:
Apache 2.4
Passenger 5.0.24
Rails 4.2
今回は、SSL証明書発行から設置までひととおり行い、Railsアプリをhttpsで動かすところまで記載する。
SSL選び
今回のSSL選びの基準は
- 1年契約できる
- 価格は1万円以内
- 信頼性がある
- 即日発行してくれる
価格・信頼性・発行スピードを考慮した結果
RapidSSLファイル認証タイプ1,500円(税抜)
入力するのはCSRだけ!承認用メールアドレス不要。全て日本語でのご案内で分かりやすい!??RapidSSLファイル認証はとにかく申請が楽です!お試しください。
https://www.ssl-store.jp/rapidssl/
これに決定。
実際、申し込み~証明書発行まで、約3時間ほどというスピードだった。発行機関が大手のGeoTrust
でこの価格なら満足。個人でなんかサービスつくるときもいけそうな価格。
証明書の発行
発行までの流れや認証方法は、選んだものによる。(今回は上記のRapidSSLの場合)
今回のコモンネームはowani.net
を例に。
1.CSRと秘密鍵の作成
さっそくCSRを作成する。SSL証明書を設置するサーバにログインして、rootで作業。
1.# openssl req -new -newkey rsa:2048 -nodes -keyout owani.net.key -out owani.net.csr
上記実行後、以下に必要な項目を入力する。
項目 | 例 |
---|---|
Country:(国名) | JP |
State:(都道府県名) | Tokyo |
Locality:(市区町村名) | Chiyoda-ku |
Organizational Name:(組織名) | Owani, Inc. |
Organizational Unit:(部門名) | System |
Common Name:(コモンネーム) | owani.net |
Email:(メールアドレス) | info@54.249.216.6 |
A challenge passwordなど以下は何も入力せず、Enter。
2.CSRの提出
つくったowani.net.csr
を提出。
3.認証(認証ファイル設置)
CSRを提出後、発行機関からの認証作業がある。選んだプランによっては、電話、メールなどの認証方法がある。今回選んだものはRapidSSLファイル認証だったので、ドメインでアクセスできる場所にファイルを設置して、発行機関がそのファイルをクロールできたらOK。
http://54.249.216.6/XXXXXXXX.html
今回は、ファイル設置後、15分ほどで認証され、証明書が即発行された。
4.証明書の発行完了
証明書と中間証明書がメールで送られてくる。これで証明書発行が完了。
サーバ側の設定
1.mod-sslのインストール
mod-sslが入ってなかったのでインストール。
1.$ sudo yum install mod_ssl
そうすると、以下のファイルが設置される。
/etc/httpd/conf.modules.d/00-ssl.conf
/etc/httpd/conf.d/ssl.conf
2.認証ファイルの設置
設置用ディレクトリ作成と設置
1.$ mkdir -p /etc/httpd/ssl
今回は上記のディレクトリに
- 証明書:
/etc/httpd/ssl/owani.net.crt
- 中間証明書:
/etc/httpd/ssl/owani.net.crt
- 秘密鍵:
/etc/httpd/ssl/owani.net.key
を設置する。
サーバ証明書と中間CA証明書
Apache2.4からは中間CA証明書を指定するSSLCertificateChainFile
ディレクティブがなくなったらしい。そのためサーバ証明書+中間CA証明書で1つのファイルにしておく。
SSLCertificateKeyFile
:秘密鍵SSLCertificateFile
:サーバ証明書(上)+中間CA証明書(下)
owani.net.crt
はこんな感じ。
1.-----BEGIN CERTIFICATE-----
2.サーバ証明書
3.-----END CERTIFICATE-----
4.-----BEGIN CERTIFICATE-----
5.中間CA証明書
6.-----END CERTIFICATE-----
/etc/httpd/conf.d/ssl.confの修正
1.DocumentRoot "/var/www/owani.net/public" # 公開ディレクトリ
2.ServerName owani.net:443 # ドメイン
3....
4....
5.SSLCertificateFile /etc/httpd/ssl/owani.net.crt # サーバ証明書+中間CA証明書
6....
7.SSLCertificateKeyFile /etc/httpd/ssl/owani.net.key # 秘密鍵
Railsの設定
SSLを有効に
config/environments/production.rb
を修正。
1....
2....
3. # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
4. config.force_ssl = true
5....
6....
apache再起動
設定の変更を反映。
1.$ sudo systemctl restart httpd
おまけ
http——->https
1.RewriteEngine on
2.RewriteCond %{HTTPS} off
3.RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]