Let's Encrypt でSSL

Let's Encrypt で無料SSLを使う

Certbot - Official

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