🛠️

AWS EC2 (Amazon Linux 2) に Certbot で SSL/TLS 対応

2022/03/02に公開

Amazon Linux 2 に Certbot を導入

まず AWS 公式のドキュメント 👇 は情報が古くてダメです。
Certificate Automation: Amazon Linux 2 での Let's Encrypt と Certbot の使用

ServerFault の以下の回答が解決の糸口になりました。
How to install Certbot on Amazon Linux EC2

EC2 インスタンスに入って

$ sudo amazon-linux-extras install -y epel
$ sudo yum update
$ sudo yum install -y certbot python2-certbot-apache
$ sudo certbot

ここで、メールアドレスを登録したり起動中のバーチャルホストのドメインを選択したりしてpemの生成とhttpd.confおよびhttpd-le-ssl.confの編集を自動でやってもらう。

httpd.confを確認してバーチャルホストの設定内にRewriteEngine, RewriteCond, RewriteRuleが追加されていることを確認。

httpd.confの例
NameVirtualHost *:80
<VirtualHost *:80>
  DocumentRoot /home/ec2-user/node_server/public
  ServerName hoge.com
  ProxyPass / http://localhost:3003/
  ProxyPassReverse / http:/localhost:3003/
  RewriteEngine on
  RewriteCond %{SERVER_NAME} =hoge.com
  RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Include /etc/httpd/conf/httpd-le-ssl.conf
httpd-le-ssl.confの例
<IfModule mod_ssl.c>
<VirtualHost *:443>
  DocumentRoot /home/ec2-user/node_server/public
  ServerName hoge.com
  ProxyPass / http://localhost:3003/
  ProxyPassReverse / http:/localhost:3003/
  SSLCertificateFile /etc/letsencrypt/live/hoge.com/fullchain.pem
  SSLCertificateKeyFile /etc/letsencrypt/live/hoge.com/privkey.pem
  Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

確認ができたら Apache を再起動

sudo systemctl httpd restart

Discussion