Let's Encrypt で運用しているサイトのサーバーを移転しました
ドメインは仮の sample.com
へ変更しています
Ubuntu 20.04 で試しました
古い TLS 証明書を新しいサーバーへ一旦コピーして、https でアクセスできるようにして
そのあと、Let's Encrypt で TLS 証明書を作って、auto renewal されるようにします
Certbot Instructions | Certbot を見て
certbot を新しいサーバーにも入れておきます
移転前のサーバーで必要なものを集めて新しいサーバーへ配置します
Nginx conf
path: /etc/nginx/conf.d/sample.com.conf
同じ場所にコピー
server {
root /usr/share/nginx/sample.com;
index index.html index.htm;
listen 443 ssl;
server_name sample.com;
ssl_certificate /etc/letsencrypt/live/sample.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sample.com/privkey.pem;
ssl_dhparam /etc/ssl/private/dhparam.pem;
# 省略
}
Nginx conf を見て TLS 証明書などの場所から pem ファイルを新しいサーバーへ移します 証明書のファイルの場所を見ると
$ sudo ls -al /etc/letsencrypt/live/sample.com
total 8
drwxr-xr-x 2 root root 4096 12月 10 08:50 .
drwx------ 5 root root 4096 1月 6 2021 ..
lrwxrwxrwx 1 root root 33 12月 10 08:50 cert.pem -> ../../archive/sample.com/cert34.pem
lrwxrwxrwx 1 root root 34 12月 10 08:50 chain.pem -> ../../archive/sample.com/chain34.pem
lrwxrwxrwx 1 root root 38 12月 10 08:50 fullchain.pem -> ../../archive/sample.com/fullchain34.pem
lrwxrwxrwx 1 root root 36 12月 10 08:50 privkey.pem -> ../../archive/sample.com/privkey34.pem
シンボリックリンクファイルがあるので本体をコピーします
/etc/letsencrypt/archive/sample.com/*34.pem
にありました
*34.pem
の数字を取っておきます
cert.pem
chain.pem
fullchain.pem
privkey.pem
これは新しいサーバーの適当な場所へおいておきます(後で不要になります)
/home/user/certificates
にでもおいておきます
Nginx conf の証明書の場所を /home/user/certificates
に変えておきます
server {
root /usr/share/nginx/sample.com;
index index.html index.htm;
listen 443 ssl;
server_name sample.com;
ssl_certificate /home/user/certificates/fullchain.pem;
ssl_certificate_key /home/user/certificates/privkey.pem;
ssl_dhparam /etc/ssl/private/dhparam.pem;
# 省略
}
dhparam.pem も用意していたので、古いサーバーから持ってきて同じ場所においておきます
あとは表示するコンテンツを公開ディレクトリ(Nginx conf の root の場所)に置きます
これで Nginx reload
sudo systemctl reload nginx
DNS を変更して、古いサーバーから新しいサーバーに切り替えます
A レコードの IP アドレスを新しいサーバーに替えました
ブラウザでアクセスして表示されるか確認します
問題なければ、Let's Encrypt で TLS 証明書を作成します
心配であれば --dry-run
をつけて確認するといいです
sudo certbot certonly --webroot -w /usr/share/nginx/sample.com -d sample.com -d www.sample.com
証明書が作成されます
ブラウザから証明書を確認して、新しくなったことを確認します
証明書リニューアルのコマンドを打ちます
sudo certbot renew
こうしておけば、auto renewal されるはず
また、証明書情報が見たければ
sudo certbot certificates
で確認できます
一時的に用意した /home/user/certificates
は不要なので消しましょう
古いサーバーのTLS証明書も不要なので古いサーバーで
sudo certbot delete --cert-name sample.com
して消しておきましょう
これであとは証明書の期限が切れるまえに auto renewal されてるか確認しましょう