【docker】Amazon Linux2 apache HTTPS通信設定

注意: この方法ではhttps通信が出来ない事を確認しました。参考程度にして下さい。2023.9.9

前回の説明を参考に docker compose を使用して Amazon Linux2 コンテナに Apache をインストールし、HTTPS通信を行います。

なお、前回は以下を参照して下さい。

ディレクトリ構成

ディレクトリ構成は以下とします。

ディレクトリ or ファイル説明
apphtmlやphpファイルなどを配置する為のディレクトリ
docker-compose.ymldocker-compose.ymlファイル
docker/web/DockerfileDockerfileファイル
docker/web/certsサーバ証明書ファイル配置ディレクトリ
docker/web/confHTTPS通信用Apache設定ファイル配置ディレクトリ

サーバ証明書の作成

mkcertを使用し、サーバ証明書を作成します。作成方法は以下を参考にして下さい。

作成したサーバ証明書(ファイル)は以下へ配置して下さい。

・パス
docker/web/certs

・ファイル名
server_key.pem
server.pem

HTTPS通信用の設定ファイル設置

HTTPS通信を行う為のApacheの設定ファイルを作成します。今回は例として localssl.conf と言うファイルを作成します。
localssl.confの内容は以下の通りです。サーバ証明書及び、秘密鍵のパス、ファイル名は適宜変更して下さい。

Listen 443 https
SSLCertificateFile /etc/ssl/local/certs/server.pem
SSLCertificateKeyFile /etc/ssl/local/certs/server_key.pem

作成したファイルは以下へ配置して下さい。

・パス
docker/web/conf

・ファイル名
localssl.conf

docker-compose.yml

内容

内容は以下の通りです。

version: '3'
services:
 
  web:
    container_name: amazonlinux2_sample08
    restart: always
    build: 
      context: .
      dockerfile: ./docker/web/Dockerfile
    privileged: true
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./app:/var/www/html
      - ./docker/web/certs:/etc/ssl/local/certs

ポイント説明

サーバ証明書

サーバ証明書をホストOSとゲストOSで共有します。具体的な設定箇所は以下となります。

./docker/web/certs:/etc/ssl/local/certs

Dockerfile

内容

内容は以下の通りです。

# イメージ
FROM amazonlinux:2
 
# apacheのインストール
RUN yum -y update
RUN yum -y install httpd

# Apacheの設定ファイルを配置する。
ADD ./docker/web/conf/*.conf /etc/httpd/conf.d/

# mod ssl のインストール
RUN yum install -y mod_ssl

# mod ssl をインストールした時に作成されるssl設定ファイルを使用しない
RUN mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf_bk

# apacheを自動起動させる
RUN systemctl enable httpd
 
# コンテナ起動時 (docker run) コマンド
CMD ["/sbin/init"]

ポイント説明

設定ファイルの読み込み

localssl.conf をApacheに読み込ませます。ホストOSのディレクトリ ./docker/web/conf/ 以下のファイル拡張子が .conf のファイルを ゲストOSのディレクトリ /etc/httpd/conf.d/ へコピーします。/etc/httpd/conf.d/ 以下はApacheが読み込む設定ファイルのディレクトリとなっています。具体的な設定箇所は以下となります。

ADD ./docker/web/conf/*.conf /etc/httpd/conf.d/

なお、Apacheが読み込むモジュールについては以下を参考にして下さい。

mod_ssl インストール

ssl 通信を行う為のApacheのモジュールをインストールします。具体的な設定は以下となります。

RUN yum install -y mod_ssl

mod_sslインストール時に読み込まれる設定ファイルのキャンセル

mod_sslをインストールすると、ssl.conf と言うファイルが読み込まれます。このファイルを修正して使用してもいいのですが、今回は、localssl.conf を使用する為、ssl.confをリネームして読み込みを行わないようにします。具体的な設定は以下となります。

RUN mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf_bk

コマンドの実行

docker-compose.ymlが存在するディレクトリで、以下の順にコマンドを実行します。

・ビルド

docker-compose build

・コンテナ起動

docker-compose up -d

・コンテナ起動確認

docker-compose ps

動作確認

動作確認用ファイルの作成

以下のコマンドを実行し、確認の為にブラウザに表示させるファイルを作成します。
内容は “test” と言う文字としますが内容はなんでも良いです。

・コマンド

vi /var/www/html/index.html

確認

ブラウザへ https://localhost を入力して下さい。 “test” と表示されれば成功です。

最後に

特にありません。

© DeNnie.Lab All Rights Reserved.