この記事でわかること
HTTPでのデプロイ後Certbotを用いた無料でのHTTPS取得方法を解説します!
独学やスクールでの初学者に向けて丁寧に解説していきます。
参考にしていただけると幸いです^^
また間違っているところがあればご教授お願いします
環境
Ruby 2.6.3
Rails 5.2.6
本番環境 nginx/Puma/Amazon Linux2/AWS EC2/MySQL
※CertbotはAmazon Linuxでは動作しません
Amazon Linux2を使用している場合のみ実装できます
目次
- EC2にHTTPSを追加する
- nginxのconfファイルを編集
- railsのconfigファイルを編集
- Certbotの実装
- 自動更新のcronを設定する
解説
1.EC2にHTTPSを追加する
AWSにログインしEC2を開いて、
インスタンスID > セキュリティ > セキュリティグループの順に進みます。
次にインバウンドルール > インバウンドルールを編集の順に進み、使用するポートのタイプを「HTTPS」に変更します。
2.nginxのconfファイルを編集
cloud9でEC2にログインして、「/etc/nginx/conf.d/アプリケーション名.conf」を編集します。
追記する箇所は2箇所で
3.railsのconfigファイルを編集
config/environments/production.rbの50行目のコメントを外します。
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
以上になります!
最後までご覧いただきありがとうございます^^
お疲れさまでした!!!