certbotでSSL化してあるサイトを別サーバーに移行
certbot(Let's Encrypt)を使って無料SSL(https)化してあるサイトを別サーバーに移行したときの覚書。本番環境なのでユーザーに気付かせないようにやる。
環境: CentOS7, certbot 0.14.1, nginx 1.12.0
手順一覧
- tarアーカイブしたソースを移行先にコピー
- データベースをExport&Import
- 移行元の秘密鍵と著名済み証明書をコピー、nginxのconf設定
- ローカルマシンのhostsファイルに移行先のIPアドレスと記述して動作確認
- ドメインレジストラでDNS変更
- 移行先サーバーでcertbotコマンドから取得し直し
- 移行元サーバーからデータを削除
3.移行元の秘密鍵と著名済み証明書をコピー、nginxのconf設定
移行元から秘密鍵と証明書をコピーするところのコマンド。
【移行先サーバー】
# cd /etc/nginx/
# mkdir ssl.d
# cd ssl.d/
移行元のpemを開いて手動でコピー&ペースト
# vi hoge.co.jp.fullchain.pem
# vi hoge.co.jp.privkey.pem
# cd ../conf.d/
# less hoge.conf
server {
listen 80;
server_name hoge.co.jp;
return 301 https://hoge.co.jp$request_uri;#root /home/httpd/hoge-hp/wordpress;
# WordPress Setting
#include conf.d/global/wordpress_restrictions.conf;
#include conf.d/global/wordpress_dev.conf;
#include conf.d/global/wordpress_live.conf;
}server {
listen 443 ssl;
server_name hoge.co.jp;root /home/httpd/hoge-hp/wordpress;
# Gzip
include conf.d/global/gzip.conf;# WordPress Setting
include conf.d/global/wordpress_restrictions.conf;
#include conf.d/global/wordpress_dev.conf;
include conf.d/global/wordpress_live.conf;# SSL
include conf.d/global/ssl.conf;
#ssl_certificate /etc/letsencrypt/live/hoge.co.jp/fullchain.pem;
#ssl_certificate_key /etc/letsencrypt/live/hoge.co.jp/privkey.pem;
ssl_certificate /etc/nginx/ssl.d/hoge.co.jp.fullchain.pem;
ssl_certificate_key /etc/nginx/ssl.d/hoge.co.jp.privkey.pem;
}
確認してnginx再読み込み
# nginx -t
# systemctl reload nginx
hostsファイルを編集して、特定の端末で動作確認。
6.移行先サーバーでcertbotコマンドから取得し直し
DNSを変更して設定がインターネットに反映されたらcertbotで取得し直す。certbotで複数回失敗すると、しばらくコマンドを受け付けないので、十分DNSが浸透してからやった方がいい。
# certbot certonly --webroot -w /home/httpd/hoge-hp/wordpress/ -d hoge.co.jp
確認
# ls /etc/letsencrypt/live/hoge.co.jp
confファイルを書き換え
# less /etc/nginx/conf.d/hoge.conf
# SSL
include conf.d/global/ssl.conf;
ssl_certificate /etc/letsencrypt/live/hoge.co.jp/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hoge.co.jp/privkey.pem;
#ssl_certificate /etc/nginx/ssl.d/hoge.co.jp.fullchain.pem;
#ssl_certificate_key /etc/nginx/ssl.d/hoge.co.jp.privkey.pem;
確認して再読み込み
# nginx -t
# systemctl reload nginx
cronにcertbot renewが登録されているか確認
# less /etc/cron.d/certbot
7.移行元サーバーからデータを削除
削除するもの
- nginxのconfファイル
- プロジェクトフォルダ(ソースコード)
- データベース
certbotからドメインを削除
# certbot delete
< Related Posts >