Let’s Encryptをサーバへインストール
Let’s Encryptのインストール
# sshでログイン ssh root@IPアドレス # ディレクトリ移動 cd /usr/local/src # Certbot クライアントのインストール git clone https://github.com/certbot/certbot # certbotの確認 ls -l drwxr-xr-x 14 root root 4096 1月 7 17:10 certbot # ディレクトリ移動 cd certbot # 証明書取得 ./certbot-auto certonly --webroot \ -w {ドキュメントルート} -d {SSL対象ドメイン} \ -m {メールアドレス} \ --agree-tos # 下記のように出れば成功 IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/tsukarooohi.com/fullchain.pem. Your cert will expire on 2017-04-07. To obtain a new or tweaked version of this certificate in the future, simply run certbot-auto again. To non-interactively renew *all* of your certificates, run "certbot-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le # 証明書の確認 ls -l /etc/letsencrypt/archive/{SSL対象ドメイン} -rw-r--r-- 1 root root 1801 1月 7 17:22 cert1.pem -rw-r--r-- 1 root root 1647 1月 7 17:22 chain1.pem -rw-r--r-- 1 root root 3448 1月 7 17:22 fullchain1.pem -rw-r--r-- 1 root root 1708 1月 7 17:22 privkey1.pem
SSL対象ドメイン:tsukarooohi.com
ドキュメントルート:/home/kusanagi/kusanagi_for_tsukarooohi/DocumentRoot
先ほど確認した証明書などは /etc/letsencrypt/archive/{SSL対象ドメイン} 以下に保存され /etc/letsencrypt/live/{SSL対象ドメイン} 以下にシンボリックリンクが作成されます。
Let’s Encryptの証明書は有効期限が90日間となっているため都度更新しないといけません。
この後自動更新の設定をするのですが、Let’s Encrypt自体が自動更新を推奨しているのでこのように簡単なコマンドだけで証明書を更新できるようにしているみたいです。
更新すると先ほどの /etc/letsencrypt/archive/{SSL対象ドメイン} 以下が更新されるわけですが、シンボリックリンクが貼られているためWebサーバー自体の設定の変更は必要なくなるという訳です。
# シンボリックリンクの確認 ls -l /etc/letsencrypt/live/{SSL対象ドメイン} lrwxrwxrwx 1 root root 41 1月 7 17:22 cert.pem -> ../../archive/{SSL対象ドメイン}/cert1.pem lrwxrwxrwx 1 root root 42 1月 7 17:22 chain.pem -> ../../archive/{SSL対象ドメイン}/chain1.pem lrwxrwxrwx 1 root root 46 1月 7 17:22 fullchain.pem -> ../../archive/{SSL対象ドメイン}/fullchain1.pem lrwxrwxrwx 1 root root 44 1月 7 17:22 privkey.pem -> ../../archive/{SSL対象ドメイン}/privkey1.pem
SSL通信用ポート開放
SSL通信用のポートは443になります。 下記サイトで自分のサーバーが443のポートを開放できているか確認してください。
https://www.cman.jp/network/support/port.html
Webサーバーの設定変更
# ディレクトリ移動 cd /etc/nginx/conf.d # 現設定ファイルのバックアップ cp {WPディレクトリ名}_http.conf {WPディレクトリ名}_http.conf.org # http用 cp {WPディレクトリ名}_ssl.conf {WPディレクトリ名}_ssl.conf.org # https用
WPディレクトリ名:kusanagi_for_tsukarooohi
http用設定ファイルの編集
vim {WPディレクトリ名}_http.conf # httpはhttpsへリダイレクト server { listen 80; server_name {SSL対象ドメイン}; return 301 https://{SSL対象ドメイン}$request_uri; }
https(SSL)用設定ファイルの編集
vim {WPディレクトリ名}_ssl.conf server { listen 443 ssl http2; server_name {SSL対象ドメイン}; ssl_certificate /etc/letsencrypt/live/{SSL対象ドメイン}/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/{SSL対象ドメイン}/privkey.pem; ssl_dhparam /etc/kusanagi.d/ssl/dhparam.key; ssl_session_tickets on; ssl_session_ticket_key /etc/kusanagi.d/ssl_sess_ticket.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-G CM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:E CDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RS A-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES 256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_prefer_server_ciphers on;
Nginxの再起動とSSLの確認
# kusanagiサーバーの場合 kusanagi restart
再起動が完了したら実際にブラウザでアクセスしてhttpsになっているか確認しましょう。
今までのhttpのページからhttpsのページに301リダイレクトされるかの確認もお忘れなく!
SSLの自動更新の設定
Let’s Encryptの無料SSL証明書は有効期限が90日間となっているのですが、毎回手動で更新なんてしてられません。
Certbotクライアントには更新用のコマンドが用意されているため、それを1日/月にクーロンによって自動実行します。
# クーロン設定の確認 crontab -l no crontab for root # クーロン設定コマンド crontab -e # 毎月1日の1時に強制的に更新をします。 0 1 1 * * root /usr/local/src/certbot/certbot-auto renew –force-renew && systemctl restart nginx # クーロンの設定確認 crontab -l 0 1 1 * * root /usr/local/src/certbot/certbot-auto renew –force-renew && systemctl restart nginx
これでLet’s Encryptの無料SSL証明書の取得から設定、自動更新までが完了になります。
後は翌月にでもSSLの有効期限を確認し、ちゃんと更新されていれば問題なしです。