Apache

SSL証明書設置 (Apache2.4 + mod_ssl)

Hypertext-Transfer-Protocol-Secure
o_wani
この記事は作成から8年以上経過しているため、内容が古くなっている可能性があります。

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]

参考:How To Create an SSL Certificate on Apache for CentOS 7

STAFF
o_wani
o_wani
スタッフ
大学卒業後、15年間WEB業界で働く。現在はマネジメントに従事していますが、ChatGPTの登場に触発され、このブログを再開。AIをパートナーに、自分で手を動かして実装する楽しさと喜びを再発見中。時代が変わりつつある中でも、陳腐化しない情報発信も目指しています。
記事URLをコピーしました