SiG Staff Blog

福井と金沢にあるSIGという会社で流行らそうとしたノウハウ集。主に流行らないが・・・。

EC2に作ったNginxにLet's Encryptを導入する

オレオレ証明からLet's Encriptに変更する

前提

yakisaba.hatenablog.jp の通りにサーバーが立っている事。

注意

EC2のパブリックDNSだと登録できないそう。
適当にドメインを取ってみて試してみる

ドメインを取得して、Route53にAレコードを追加する

  1. お名前.comとかでDNSを取得する。
  2. EC2のダッシュボードを開き、左側にあるElastic IPを選択する。
  3. 新しいIPの割り当てを選択して、IPを取得する。
  4. 作成したものを右クリックして、アドレスの割り当てを選択して、EC2インスタンスに割り当てる。
  5. 作成されたIPアドレスをメモしておく。
  6. Route53を開き、Hosted Zoneを開く。
  7. create hosted zoneを選択して、Domain Nameに作成したドメインをいれて、作成をする。
  8. 作成したゾーンを選択してgo to recordを選ぶ。
  9. create recordを選択して、下のように設定して作成する。
  10. NSレコードの内容をコピーして、取得したドメインのネームサーバーに設定する。
  11. nslookup www.ドメインIPアドレスと紐づいているかチェックする。

必要なツールをインストール

# gitのインストール
$ sudo yum install git

# Let's Encryptのツールをインストール
$ git clone https://github.com/certbot/certbot ~/certbot
$ cd ~/certbot

証明書の発行

# ドメイン名、メアドは取得したものを使う
$ sudo ./certbot-auto certonly --webroot -w ドキュメントルート -d 取得したドメイン名 -m 自身のメールアドレス  --debug

証明書が出来上がるので、それを /etc/nginx/conf.d/default.conf に登録する。

/etc/nginx/conf.d/default.conf

  ssl_certificate /etc/letsencrypt/live/ドメイン名/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/ドメイン名/privkey.pem;

確認

nginxを再起動して接続してみて、https + http2で繋がっていればOK

継続的に取得するようにする

# 毎月1日の1時に強制的に更新する。
0 1 1 * * root /nome/ec2-user/certbot/certbot-auto renew --force-renewal && service nginx restart