ちなみに

火曜日の空は僕を押しつぶした。

Let's Encrypt で個人サイトを HTTPS 化した

Universal Linkについて調べていて、HTTPSが必須っぽいし、今後いろいろ実験するのにもHTTPS化しておいて損はなさそうなので、静的なHTMLしか返してない自分の持っているサイトを無駄にHTTPS化した。

https://github.com/letsencrypt/letsencrypt

証明書買わなくても Let's Encrypt 使うと簡単に取得できる。コマンドラインのみで完結するのも最高。

READMEに従ってインストールする。

$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto --help

最後はヘルプを見てねということかと思ったら、必要なソフトウェアを自動的にインストールしてくれた。

ヘルプを見ていると Nginx 用のプラグインがありそうに見えたけど実はなかった。あきらめてREADMEにしたがって --standalone を使う。

$ ./letsencrypt-auto certonly --standalone --email [MAIL ADDRESS] --agree-tos -d hacobun.co -d www.hacobun.co -d read.hacobun.co

作業中に80番ポートをlistenするみたいで Nginx 起動しっぱなしだったら怒られたので一旦止める。 個人サイトなら気軽に止められる。

これだけで /etc/letsencrypt/live/hacobun.co に証明書と秘密鍵が生成された。

あとは Nginx で443番ポートを listen 出来るようにする

server {
        listen 80;
        server_name hacobun.co www.hacobun.co;
        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl;
        server_name  hacobun.co www.hacobun.co;

        ssl_certificate /etc/letsencrypt/live/hacobun.co/cert.pem;
        ssl_certificate_key /etc/letsencrypt/live/hacobun.co/privkey.pem;

        # ....
}

qiita.com

http → htts のリダイレクトは id:KGA さんの記事を見てそのまま設定した。

これで Nginx をリロードすると HTTPS 化が完了した。 30分もかからなかった気がする。