knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

aws LightSail + ubuntu +docker SSL/HTTPS 設定 #php #Laravel #aws

index:

概要:

前の HTTPS化のインフラ関連で、
aws LightSail で、LetsencryptによるSSL
Ubuntu 16+ docker + Laravel 5.8 構成となります。

環境

amazon aws LightSail
Ubuntu 16
nginx
docker
docker-compose
AWS Route53
Letsencrypt

前提 、使用しない部分

・ロードバランサ使用しない、
AWS Certificate Manager 使用しない
Amazon CloudFront 使用しない

前提、事前の準備等

ドメイン取得済、今回は Route53でドメイン取得
・Laravel 追加済
・docker, docker-compose の追加済
aws LightSail の固定IPを、Route53で
 取得したドメインに。割り当てておく

参考の設定

github.com


手順

・LightSail は、Ubuntu 16のみ
 wordpress等 アプリ無
HTTPS は、初期で通信できない為
 LightSail>ネットワーキング>静的IP >
 ファイアウォールで、
HTTPS 443を、追加しておく。

f:id:knaka0209:20200209193327p:plain

Letsencrypt で、SSL

・nginx等のHTTPサーバを、立ち上げておきます。
外部からLetsencryptが、ドメインを確認するらしく。通信に失敗すると
 処理が、進まなかった為。

・例で、example.com は、設定ドメイン
・仮に、HTTPを、docker nginxで立ち上げたフォルダ
 /home/ubuntu/work/docker_nginx_Light
・途中で、メールアドレス等の入力あり
・成功すると、  /etc/letsencrypt/live
 あたりに、SSL証明書が発行される

cd /tmp
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto
./letsencrypt-auto certonly --webroot -w /home/ubuntu/work/docker_nginx_Light -d example.com
sudo cp /etc/letsencrypt/live/example.com/fullchain.pem /home/ubuntu/work/docker_nginx_Light/ssl/server.crt
sudo cp /etc/letsencrypt/live/example.com/privkey.pem /home/ubuntu/work/docker_nginx_Light/ssl/server.key

docker-compose.yml

https://github.com/kuc-arc-f/docker_Light_SSL/blob/master/docker-compose.yml

version: '3'

services:
 web:
    build: ./docker-nginx
    ports:
        - 80:80
        - 443:443
    depends_on:
        - app
    volumes:
        - ./:/var/www/html
        - ./docker-nginx/default.conf:/etc/nginx/conf.d/default.conf
        - ./ssl:/etc/nginx/ssl
    links:
        - app
 app:
    build: ./docker-php
    depends_on:
        - db
    links:
        - db
    volumes:
        - ./:/var/www/html
 db:
    image: mysql:5.7.19
    volumes:
        - ./db/mysql_data:/var/lib/mysql    
    ports:
        - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root         #
      MYSQL_DATABASE: laravel         #
      MYSQL_USER: db_user           #ユーザ名
      MYSQL_PASSWORD: password   #ユーザ用パスワード

コンテナ起動

・LEMP (nginx)構成 + Laravel の、SSL対応コンテナを起動


./ssl に、Letsencrypt のSSL関連ファイルを配置

docker-compose up -d

https://設定したドメイン 、でSSL化できました。

chrome で、設置ページを開くと
 Letsencrypt証明書の情報が見れました
 有効期間は、90日らしいですね。


f:id:knaka0209:20200209195314p:plain