Let's Encrypt でSSL
Let's Encrypt で無料SSLを使う
snap install --classic certbot
# check.
certbot certificates
サーバー移転時には/etc/letsencrypt を丸ごとコピーで。
証明書取得
Nginx が既に稼働中。認証局によるアクセス確認がランタイムに行われます。
# 確認されるURL
http://aaa.mydomain.com/.well-known/acme-challenge/***
Web サーバーが複数台ある場合、その全てで正しく返答できないといけない。
# nginx.conf
# Trick nginx (All web server. Other server use proxy_pass.)
location '/.well-known/acme-challenge/' {
root /home/ip_access;
try_files $uri @acme-challenge;
}
location @acme-challenge {
proxy_pass http://192.168.23.75:80; # Main web server.
}
新規SSL 作成
certbot certonly \
--webroot \
--agree-tos \
-w /home/ip_access \
-m ast@mydomain.com \
-d mail.mydomain.com
ワイルドカード新規作成
途中、手動でDNSレコード設定します。
certbot --debug certonly --agree-tos --manual \
--preferred-challenges dns-01 \
–manual-public-ip-logging-ok \
-m admin@mydomain \
-d *.mydomain.com
# [Step1] Add DNS TXT record.
TXT _acme-challenge.mydomain.com d7***************hs
出来上がった証明書はココ。
/etc/letsencrypt/live/
各Web サーバにもコピーする。
# Script called after update.
vi /etc/letsencrypt/renewal-hooks/deploy/scp_mydomain.sh
#!/bin/bash
SRC=/etc/letsencrypt/live/mydomain.com
DST=/etc/ssl/letsencrypt/mydomain.com
cp -fL $SRC/* $DST
scp -rp $SRC/* root@192.168.23.70:$DST
scp -rp $SRC/* root@192.168.24.75:$DST
ワイルドカード更新 (手動)
サーバー確認のため、DNS TXTレコードとwebファイル配置をする。登録した全てのサーバーで応答するように。
certbot certonly --manual \
-manual-public-ip-logging-ok \
-d *.mydomain.com \
-d mydomain.com
Choose an account. IP being logged? - Yes
Add DNS TXT record. (Step1)
_acme-challenge.mydomain.com
d7HCaFhZaR4wu8a9Um7VVcaIYZfR6and2u288gahs
Create a web file containing hash values. (Step 2)
http://mydomain.com/.well-known/acme-challenge/Yc0yLeaDTldtt3_lUZy5l
Yc0yLeaDTldtt3_lUZy5l.iglYdQT8998tlQLYhtbBNSf97s4CzX