1
1

DockerのApacheでlocalhostに対してオレオレ認証のhttpsで接続する

Posted at

はじめに

タイトルの通りです。
ブラウザで https://localhost/ で html ファイルが閲覧できるようになるところをゴールとします。

確認環境

  • WSL2(Ubuntu22.04.3 LTS)
  • Docker (24.0.6)
  • Docker Compose (2.4.1)
  • Apache 2.4.58
    ※Apache については こちら の環境ベースで書き進めます

設定方法

秘密鍵と証明書ファイルを作成

既存の設定ファイル conf/extra/httpd-ssl.conf のデフォルト設定で鍵と認証ファイルのパスが

  • /usr/local/apache2/conf/server.crt
  • /usr/local/apache2/conf/server.key

になっているため、このパスの通りにファイルが配置されるように進めます

shell実行
# 設定ファイルのフォルダに移動(事前にプロジェクトフォルダに移動)
cd conf
# RSA 暗号方式の秘密鍵を作成
openssl genrsa 2048 > server.key
# 作成した秘密鍵からCSR(証明書署名要求)ファイルを作成
openssl req -new -key server.key > server.csr
# 自己署名証明書(CRT)を作成
openssl x509 -days 3650 -req -sha256 -signkey server.key < server.csr > server.crt
# 不要なCSRファイルを削除
rm server.csr

Apacheの設定

conf/httpd.conf ※以下をコメントアウト
LoadModule ssl_module modules/mod_ssl.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Include conf/extra/httpd-ssl.conf

compose.ymlの設定

composeファイルに、443ポートからアクセスできるように修正

compose.yml
    ports:
      - '443:443'

※80は削除した方が良い
※すでにコンテナを起動している場合は、再作成が必要

確認方法

ブラウザで https://localhost/ に対してアクセスする
httpslocalhost.png
※初回は、セキュリティの警告が出るが無視して接続する
※Locationのプロキシ設定も巻き込んで、httpsで接続できるようになります

おまけ

conf/extra/httpd-ssl.conf を有効にせず conf/httpd.confに対して直接記載したい場合は、

Listen 443
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile "/usr/local/apache2/conf/server.crt"
SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"
</VirtualHost>

のみを末尾に追加しても接続可能

参考

最後に

設定ファイルがあらかじめ用意されているのは良いかもですが、module有効設定は調べるのが面倒です…
Nginxでは違った面倒さみたいなものがありますかね…

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1