MENU
A.I. とか最近流行っているらしいよ

Docker Centos7.7 で SSL化する (https化)

2020 5/14
Docker Centos7.7 で SSL化する (https化)

Docker のコンテイナーに SSL化するところでの問題とその解決方法を紹介します。

まず、docker-compose.yml の方に https 通信が必要としているポート 443 を開きましょう。

version : '2'
services:
    web:
        build: ./web
        ports:
         - '80:80'
         - '443:443'
        tty: true
        volumes:
         - ./web/docroot:/docroot

次に、apache の設定にまだドメインの設定をしてない場合、 httpd.conf に設定を追加します。
コンテイナーの中入るため、下記のコマンドを実行して、コンテイナーのBash shell を起動します。
container_name は作成したコンテイナー名を置き換えてください。( docker container ls で参照できます)
(下記のコマンドじゃなくてもSSH などでもいいです。)

docker exec -it container_name /bin/bash

コンテイナーに入ったら下記のコマンドでapacheの設定編集します。

vi /etc/httpd/conf/httpd.conf

vi コマンドで設定ファイル開いたら、下記の設定を追記します。(ファイルのどこでもいいので)

<VirtualHost *:80>
    ServerAdmin root@example.com
    DocumentRoot /var/www/html
    ServerName example.com
</VirtualHost>

:wq して vi を保存して終了します。
下記のコマンドで apache を再起動します。

systemctl restart httpd

ここで問題が発生、下記のエラーが発生。

調べた結果、docker内のコンティナーでsystemctl を使うには ホストと同等な権限に与えなければいけないらしいので、
docker-compose.yml に編集して、コンティナーを再起動します。

version : '2'
services:
    web:
        build: ./web
        ports:
         - '80:80'
         - '443:443'
        tty: true
        volumes:
         - ./web/docroot:/docroot
        #権限追加
        privileged: true
        command: /usr/sbin/init

そして下記のコマンドで設定を適応し、コンテイナーをアップします。

docker-compose up -d

systemctl を打ってみて、エラーが出ないことを確認できました。

次に Let’s Encrypt をインストールするため必要なモジュールをインストールします。

yum install -y mod_ssl

次に Let’s Encrypt をインストールします。

yum install -y certbot python2-certbot-apache

certbot を起動して証明書をインストールします
xxx.com のところを自分のサイトに置き換えてください。
www.xxx.com のサブドメインも一緒に証明書発行しましょう。

certbot –apache -d xxx.com -d www.xxx.com

コマンド実行したらメールを受け取るためのメールアドレスを聞かれますので、入力します。


次に規約への同意を聞かれますので、Aを入力します。


次にメール公開するかどうか聞かれますので、 N を入力します。


http のコネクションもhttps にリダイレクトするかと聞かれますので、2を入力します。


下記の画面が出たらSSLのインストール終了です。

この記事が気に入ったら
フォローしてね!

この記事を書いた人

コメント

コメントする

目次
閉じる