概要
無料のSSLサーバー証明書「Let’s Encrypt」を利用して、EC2 (Amazon Linux2)に適用する方法。
無料で利用できるサーバー証明書。有効期限は90日間であるが、再発行がいつでも可能。
スポンサーはシスコシステムズやFacebookなどIT最大手の企業で、信頼性も高い。
前提条件
・AWSアカウントを所持していること。
・EC2インスタンスがインターネットと通信できること。
・EC2インスタンスがLinuxOSで作成済みであること。
・Apacheがインストールされていること。
Let’s Encryptのインストール
① ターミナル経由でEC2インスタンスにSSHで接続します。
ssh -i "******.pem" ec2-user@xxx.xxx.xxx.xxx
② snapを利用して「certbot」をインストールします。
sudo yum install snapd
③ OSの再起動後にsnapが自動実行できるように以下のコマンドを入力します。
sudo systemctl enable snapd
④ シンボリックリンクを作成します。
sudo ln -s /var/lib/snapd/snap /snap
⑤ snapのcoreをインストールします。
sudo snap install core
⑥ SSL証明書を生成するコマンドを入力します。
sudo certbot certonly --webroot -w /var/www/html -d (FQDN名) --email (メールアドレス) -n --agree-tos
⑦ SSLを利用するために「mod_ssl」をインストールします。
sudo yum -y install mod_ssl
⑧ ssl.confのバックアップを取得します。(yyyymmddは西暦年月日)
sudo cp -p /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.conf.bak.yyyymmdd
⑨ ssl.confを編集します。
sudo vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/letsencrypt/live/(FQDN名)/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/(FQDN名)/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/(FQDN名)/chain.pem
⑩ Apacheの再起動をします。
sudo systemctl restart httpd
⑪ Let’s Encryptが更新できるか確認します。
sudo certbot renew --post-hook "systemctl restart httpd"
⑫ crontabを利用しLet’s Encryptを自動更新できるようにします。
sudo crontab -u root -e
⑬ 以下、貼り付けて保存します。
30 2 * * * root certbot renew --post-hook "systemctl reload httpd" --no-self-upgrade
⑭ ブラウザからhttpsでサイトを開きます。
https://.....
httpsリダイレクト
httpをhttpsにリダイレクトすることで、httpでサイトを表示させないようにし「セキュリティ」を高めます。
① httpd.confのバックアップを取得します。(yyyymmddは西暦年月日)
sudo cp -p /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak.yyyymmdd
② httpd.confを編集します。
sudo vim /etc/httpd/conf/httpd.conf
③ 以下を一番下に貼り付けて保存します。
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
④ Apacheの再起動します。
sudo systemctl restart httpd
⑤ httpでサイトにアクセスし自動的にhttpsに切り替わるか確認します。
http://.....