certbotでSSL化してあるサイトを別サーバーに移行

server-changecertbot(Let's Encrypt)を使って無料SSL(https)化してあるサイトを別サーバーに移行したときの覚書。本番環境なのでユーザーに気付かせないようにやる。

環境: CentOS7, certbot 0.14.1, nginx 1.12.0


手順一覧

  1. tarアーカイブしたソースを移行先にコピー
  2. データベースをExport&Import
  3. 移行元の秘密鍵と著名済み証明書をコピー、nginxのconf設定
  4. ローカルマシンのhostsファイルに移行先のIPアドレスと記述して動作確認
  5. ドメインレジストラでDNS変更
  6. 移行先サーバーでcertbotコマンドから取得し直し
  7. 移行元サーバーからデータを削除



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 >