はじめに
LaraDockでLaravel開発した際に、HTTPS化したいと思ったら、想像以上に楽にできて感動したので共有します。
環境
Ubunts
PHP7
Docker version 18.09.2
Docker-compose version 1.17.1
Laravel Framework 5.8.10
前提条件
LaraDockのインストールは完了しているものとします。
インストール方法が分からない方は、別記事で確認をお願いします。
俺俺SSL化の設定
まずはlaradock環境へ移動して、nginxの設定ファイルを開きます。
$ cd laradock
$ vim nginx/sites/default.conf
ファイルを開いたら、以下のコメントを削除します。
事前に「For https」という枠が用意されており分かり易い!
# For https
listen 443 ssl default_server;
listen [::]:443 ssl default_server ipv6only=on;
ssl_certificate /etc/nginx/ssl/default.crt;
ssl_certificate_key /etc/nginx/ssl/default.key;
次に以下の箇所をコメントにします。
これでHTTPからの接続を塞ぎます。
# listen 80 default_server;
# listen [::]:80 default_server ipv6only=on;
ここまでできたらファイルを保存して、DockerをリビルドすればOKです。
$ docker-compose build --no-cache nginx
$ docker-compose up -d nginx
以上、これで俺俺SSL化の完了です!
とても簡単で感動ですね。
認証ファイルの作成ロジック
もう少し処理をみると、nginxのDockerファイルにこのような処理があります。
ADD ./startup.sh /opt/startup.sh
RUN sed -i 's/\r//g' /opt/startup.sh
CMD ["/bin/bash", "/opt/startup.sh"]
このstartup.shが何をしているのか見ると、こんな感じで俺俺SSLの認証ファイルを生成していい感じに配置してからnginxを起動していることが分かります。
# !/bin/bash
if [ ! -f /etc/nginx/ssl/default.crt ]; then
openssl genrsa -out "/etc/nginx/ssl/default.key" 2048
openssl req -new -key "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.csr" -subj "/CN=default/O=default/C=UK"
openssl x509 -req -days 365 -in "/etc/nginx/ssl/default.csr" -signkey "/etc/nginx/ssl/default.key" -out "/etc/nginx/ssl/default.crt"
fi
nginx
LaraDockはDocker-compose設計など、とても綺麗に書かれており勉強になります。
まだ利用実績は少ないようですが、今後利用者が増えると嬉しいです。