Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Apache

Apacheのリバースプロキシをhttps化する手順について

投稿日:2021年2月27日 更新日:

(1) Apacheのリバースプロキシをhttps化する手順について

本記事はApacheのリバースプロキシでhttpに加えてhttpsでもできるようにするための手順です。

(1-0) STEP0:前提事項の確認

前提としては、Webサイトやドメインの設定が一通り済んでおり「httpでのリバースプロキシ設定」の済んでいる前提で進めるため、もしまだ完了していない場合は先にそれらのステップを実施頂けたらと思います。

(前提事項)
①HTML、JSP/Servlet等でホームページを作成済み
(例:「http://[ホスト名]:[ポート番号]/[アプリ名]/[画面名].jsp」のURL形式で自身のサイトにアクセスできる)

②ウェルカムページの設定が完了している
(例:「http://[ホスト名]:[ポート番号]/[アプリ名]/」のURL形式で自身のサイトにアクセスできる)

③ドメインを取得してDNSサーバとの紐づけ済み
(例:「http://[ドメイン]:[ポート番号]/[アプリ名]/」のURL形式で自身のサイトにアクセスできる)
 →https://rainbow-engine.com/register-apply-owndomain/

④Apacheのインストールが完了している
 →https://rainbow-engine.com/install-apache-centos7/

⑤Apacheのリバースプロキシの設定が完了している
(例:「http://[ドメイン]/」のURL形式で自身のサイトにアクセスできる)
 →https://rainbow-engine.com/apache-reverseproxy-howto/

そして本記事の対応により「https://[ドメイン]」でご自身のサイトにアクセス出来るようになります。

(1-1) STEP1:mod_sslモジュールの導入

「mod_ssl」はApache HTTPサーバのオプションモジュールで、OpenSSL(SSLやTLSの実装を含んだライブラリ)を使ってSSLやTLSを導入し、よりセキュアな通信を実現するための機能です。

「mod_ssl」のインストールは次のコマンドで行います。
(yumが使えない場合、例えばrpmベースのディストリビューション以外だと読み替え要)

$ sudo yum install mod_ssl

(図111)

(図112)

インストールできたら、チェックのために以下のコマンドを実行します。

httpd -M

結果として表示されるロードされたモジュールの中に「ssl_module」があるかどうか確認します。

ssl_module (shared)

(図113)

目次にもどる

(1-2) STEP2:証明書と鍵の作成

次はSSLで使用する証明書と鍵を作成していきます。使うコマンドはopensslと呼ばれる、鍵や証明書を作る時に使うコマンドです。

(構文)

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /[鍵のパス(任意のパス)]/[鍵の名前].key -out /[証明書のパス(任意のパス)]/[証明書の名前].crt

(例)

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/apache-selfsigned.key -out /etc/ssl/certificates/apache-selfsigned.crt

(図121)

コマンドを実行すると、証明書に必要な情報(組織名や国名など)を聞いてくるので、それぞれご自身の情報を入力します。
(図122)

各オプションの意味は以下の通りです。
(表)

オプション 説明
openssl OpenSSLの鍵や証明書等を作るために使うコマンドラインツールです。
req -x509 このオプションにより「X.509」規格のCSR(証明書署名要求)を作成する事を意味します。
CSRとは公開鍵証明書の発行に際して、申込人⇒認証局に送られる情報の事です。X.509は公開鍵証明書の規格で、公開鍵がドメイン/ホストの所有者に属するかを検証するために広く使用されています。
-nodes このオプションにより、OpenSSLに証明書のパスワード設定を省略するように指示します。証明書はApacheが自由に読めるようにする必要があり、パスワード認証が掛かっていると、その都度管理者が入力する手間が発生するため、それを避けるためのものです。
-day 365 このオプションにより、証明書の有効期限を設定しています。365だと1年間有効となります。
-newkey rsa:2048 証明書とセットで鍵(証明書の署名に使う鍵)を作るためのオプションです。前もって鍵を作っていない場合は、このオプションを指定して同時に作ります。RSAは公開鍵の暗号化体系で、セキュアな通信において広く利用されています。
「rsa:」の後ろの2048は、RSA鍵を2048ビットの長さで作成する事を意味しています。
-keyout 生成する秘密鍵の出力先パスを指定します。
-out 生成する証明書の出力先パスを指定します。

(参考)
opensslと似たコマンドでkeytoolコマンドがありますが、両者の違いとして「openssl」は通常の形式(pem/cer/crt/pkcsなど)で証明書などを発行するコマンドですが、Javaでは鍵や証明書は「キーストア」に格納して利用する事が好まれるため、キーストアの操作を行う場合はkeytoolコマンドを使う事になります。

目次にもどる

(1-3) STEP3:仮想ホストの設定

最後にApacheの仮想ホストを設定していきます。仮想ホストは同一サーバで複数のサイトを運営するために作られたApacheの機能です。

(1-3-1) ssl.confの確認

まず、以下のディレクトリに「ssl.conf」があるかをチェックします。

$ cd /etc/httpd/conf.d

もしあれば、そちらを編集しても良いですし、無い場合でもviエディタ等で新規に作成する事も可能です。
(図131)

目次にもどる

(1-3-2) 定義の追記

元々ssl.confがあった場合・無い場合のいずれにおいても、最終的にssl.confに以下の定義が含まれるようにします。

LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost *:443>

    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile /[証明書パス]/[証明書名].crt
    SSLCertificateKeyFile /[鍵のパス]/[鍵の名前].key

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / [リダイレクト先URL]
    ProxyPassReverse / [リダイレクト先URL]
</VirtualHost>

(図132)

目次にもどる

(1-4) STEP4:ファイアウォール設定

ファイアウォールで8443ポートを開放します。OS毎に設定箇所は異なりますが、以下にCentOSの設定方法をご紹介します。

 
 

(1-5) STEP5:Apacheの再起動・疎通チェック

設定を反映するために、Apacheの再起動を行います。

(CentOS 6の場合)

$ sudo service httpd restart

(図141)

すると、次のように「https://[ドメイン名]で接続が可能となります。
(図142)

目次にもどる 

Adsense審査用広告コード


Adsense審査用広告コード


-Apache

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

TomcatのURLに付くポート番号8080を非表示にしてドメイン名のみでサイトにアクセスする方法と手順

本記事で実現したい事は下記2点、①URLのポート番号・アプリ名を非表示(リバプロ)と②JSP/Servlet名非表示(web.xml)です。これらを実現する事でブラウザにドメイン名のみ(例:XXXX. …

ApacheをCentOS 7にインストールする手順と「yum install httpd」のエラー対処など

(0)目次&概説 (1) 記事の目的  (1-1) 目的とApache概要  (1-2) 前提条件 (2) Apacheの導入手順  (2-1) Apacheのインストール  (2-2) Apache …

Apacheのリバースプロキシでセッションを維持する方法

<目次> (1) Apacheのリバースプロキシでセッションを維持する方法  (1-1) 発生状況・エラーメッセージ  (1-2) 調査  (1-3) 原因  (1-4) 対処法 (1) Apache …

Apache HTTP Serverとは?概要や主要な機能についてご紹介

<目次> (1) Apache HTTP Serverとは?概要や主要な機能についてご紹介  (1-1) Apacheとは?  (1-2) Apacheの主な機能  (1-3) Apacheの使用例 …

Let’s Encryptの証明書の自動更新の手順(Apacheに適用した例で解説)

<目次> (1) Let’s Encryptの証明書の自動更新の手順(Apacheに適用した例で解説)  (1-1) Let’s Encriptで発行した証明書の期限について  (1-2) …

  • English (United States)
  • 日本語
Top