Ubuntu16.04+Nginx をHTTPSに対応させる

シェアする

以前、構築したUbuntu16.04+Nginx なWebサーバをHTTPSに対応させます。
関連記事:Ubuntu16.04でWordPressが動くWebサーバを構築する | としつーる

HTTPS化する理由

最近のWebブラウザは、HTTPだとアドレスバーに警告表示を出す様になりました。(コメント欄など入力フォームがあるページが対象の様です。)
グーグル、HTTPページへの警告表示を強化へ–10月リリース予定の「Chrome 62」から – CNET Japan
今後もHTTPSの流れは進んでいくでしょうし、対応できるならした方が良いかなと思いました。

HTTPS化対応作業

SSL証明書の導入

今回は無料の証明書「Let’s encrypt」を導入します。
※以下の手順はドメインとサーバのIPアドレスが結びついていることが前提です。
まずはインストール。

sudo apt-get install letsencrypt python-letsencrypt-apache

次に証明書の発行を行います。
hogehoge.comの部分は自分のドメインにします。

sudo letsencrypt certonly --standalone -d hogehoge.com

参考:letsencryptをUbuntu16.04 + Nginxで使ってみた – Qiita

証明書自動更新の設定

証明書の有効期限は3ヶ月です。それまでに更新作業を行う必要があります。
手動で更新作業を行うのは手間なのでcronで自動化します。
私は毎月1日の5時0分に更新するようにしています。

00 05 01 * * sudo systemctl stop nginx; sudo letsencrypt renew; sudo systemctl start nginx

Nginxの設定

Nginx の設定ファイルにSSLの設定を追記します。
hogehoge.com の部分は自分のドメインに読み替えてください。

server {
        # SSL configuration
        #
        listen 443 ssl http2; #default_server;
        listen [::]:443 ssl http2; #default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl on;
        ssl_certificate /etc/letsencrypt/live/hogehoge.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/hogehoge.com/privkey.pem;
以下略

HTTPで接続してきた場合はHTTPSへリダイレクトさせます。

server {
        listen 80;
        listen [::]:80;
        server_name hogehoge.com;
        return 301 https://$host$request_uri;
}

WordPressのURLを変更

WordPressを使っている方は、設定の一般を開き、WordPress アドレス (URL)とサイトアドレスを http:// から https:// へ書き換えます。