certbot のdockerイメージ利用
certbotをそのままインストールは→18 Let's Encrypt Certbot
Let's Encryptの証明書だけサッと利用したい場合にとても便利
※network_mode: hostで利用したい場合は、firewallも開ける
docker-compose.yml
---
version: "3"
services:
nginx:
image: nginx
restart: always
volumes:
- /etc/nginx/conf.d:/etc/nginx/conf.d
- /etc/letsencrypt:/etc/letsencrypt
- /var/www/html:/var/www/html
ports:
- 80:80
#network_mode: host
certbot:
image: certbot/certbot
volumes:
- /etc/letsencrypt:/etc/letsencrypt
- /var/www/html:/var/www/html
command: ["--version"]
network_mode: host
mkdir -p /etc/nginx/conf.d
下記のdefault.confを用意しておく
/etc/nginx/conf.d/default.conf
server {
server_name example.com;
listen 80;
listen [::]:80;
# テストとして普通に表示させる場合
location / {
root /var/www/html;
index index.html index.htm;
}
# 全てのリクエストをSSLサイトにリダイレクト
#location / {
# return 301 https://$host$request_uri;
#}
# 例外的に証明書更新時のlet's encryptからのリクエストは80番で受ける(443に飛ばしても実は問題ない)
location /.well-known/acme-challenge/ {
root /var/www/html;
}
}
これでnginxのdocker imageをダウンロードして起動してくれる。
# docker-compose up -d
docker-compose run --rm certbot certonly --webroot -w /var/www/html -d hogehoge.com
docker-compose run --rm certbot renew
docker-compose run --rm certbot certificates
server {
server_name example.com;
listen 80;
listen [::]:80;
# テストとして普通に表示させる場合
location / {
root /var/www/html;
index index.html index.htm;
}
# 全てのリクエストをSSLサイトにリダイレクト
#location / {
# return 301 https://$host$request_uri;
#}
# 例外的に証明書更新時のlet's encryptからのリクエストは80番で受ける(443に飛ばしても実は問題ない)
location /.well-known/acme-challenge/ {
root /var/www/html;
}
}
server {
server_name example.com;
listen 443 ssl http2;
listen [::]:443 ssl http2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=2592000" always;
root /var/www/html;
}
## ワイルドカード証明書の取得
docker-compose run --rm certbot certonly \ --manual \ --preferred-challenges dns \ -d "*.fl8.jp" -d fl8.jp Saving debug log to /var/log/letsencrypt/letsencrypt.log Requesting a certificate for *.fl8.jp and fl8.jp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name: _acme-challenge.fl8.jp. with the following value: de7J-7o69WV3ep_twgtMFYnlP8RRROblKjYqAQqCgck - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
あとはDNSにTXTレコードを登録して、Enterを押す。