LoginSignup
4
3

More than 1 year has passed since last update.

【初心者でも無料でHTTPS化したい!!!】Certbotを用いて実装【画像つき】

Posted at

この記事でわかること

HTTPでのデプロイ後Certbotを用いた無料でのHTTPS取得方法を解説します!
独学やスクールでの初学者に向けて丁寧に解説していきます。

参考にしていただけると幸いです^^
また間違っているところがあればご教授お願いします

環境

Ruby 2.6.3
Rails 5.2.6
本番環境 nginx/Puma/Amazon Linux2/AWS EC2/MySQL

※CertbotはAmazon Linuxでは動作しません
Amazon Linux2を使用している場合のみ実装できます

目次

  1. EC2にHTTPSを追加する
  2. nginxのconfファイルを編集
  3. railsのconfigファイルを編集
  4. Certbotの実装
  5. 自動更新のcronを設定する

解説

1.EC2にHTTPSを追加する

AWSにログインしEC2を開いて、
インスタンスID > セキュリティ > セキュリティグループの順に進みます。

C9F6DDB3-7B9F-4E53-B85F-FF5FB7D83440_1_201_a.jpeg

次にインバウンドルール > インバウンドルールを編集の順に進み、使用するポートのタイプを「HTTPS」に変更します。
8038EC06-77C5-46BE-84DC-309320163930.jpeg

2.nginxのconfファイルを編集

cloud9でEC2にログインして、「/etc/nginx/conf.d/アプリケーション名.conf」を編集します。
追記する箇所は2箇所で

  • server_nameに "取得したドメイン名"
  • location/の{}カッコ内に " proxy_set_header X-FORWARDED_PROTO https;"
    と記載します。
    2A64D5AE-7039-42F8-BF14-FE8CF6C50E83_1_201_a.jpeg

3.railsのconfigファイルを編集

config/environments/production.rbの50行目のコメントを外します。

DAFE18DF-5841-40E3-A894-2FDA46ECFC11.jpeg

4.Certbotの実装

EC2にログインして、下記コマンドを実行します。
コピペでOKです☆

$ cd 
$ sudo wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/
$ sudo rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-*.rpm
$ sudo yum-config-manager --enable epel*
$ sudo yum install -y certbot python2-certbot-nginx
$ sudo certbot --nginx

途中で質問をされるので下記のように答えます!

  • 緊急時の通知用メールアドレス
    →アドレスを入力しEnter

  • 利用規約への同意
    →「Y」と入力 して[Enter]キーを押す

  • Electronic Frontir Foundationへのメール共有聞かれる
    →「N」と入力 して[Enter]キーを押す

  • 数字を入力して[Enter]キーを押す
    →ドメインにわり振られるナンバーです。(コマンドラインの返答をよく見ると1とか2とか書いてあります!)

以下の表示がでれば成功です!

Congratulations! You have successfully enabled https://hoge.com 

成功を確認したら、Nginxを再起動しておきましょう!

sudo systemctl restart nginx

5.自動更新のcronを設定する

HTTPSの暗号化通信は90日の期限が設けられています。
自動で更新するように設定しておきましょう!

EC2にログインしてcron tabの編集をします。

sudo crontab -u root -e

viコマンドで下記を追記します
※「i」で入力モードにして、以下をコピペ。escキーを押して「:wq」で保存&viの終了ができます。

00 01 01 * * root  certbot renew --force-renew --post-hook "sudo systemctl restart nginx"

以下で確認できたらOKです☆

$ sudo crontab -u root -l
00 01 01 * * root  certbot renew --force-renew --post-hook "sudo systemctl restart nginx"

そして最後にcronを再起動して完了です!

sudo systemctl restart crond

以上になります!
最後までご覧いただきありがとうございます^^
お疲れさまでした!!!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3