Amazon Linux2023のWEBサイトSSL化

作業にはroot権限が必要だよ

1.Pythonのインストール

dnf install -y python3 augeas-libs pip

入っていたら、「入ってるよ」と返って来るだけなので気にせず叩く。

2.certbotのインストール

Let's Encriptを利用した無料SSLの場合に実施する。

python3 -m venv /opt/certbot/
/opt/certbot/bin/pip install --upgrade pip
/opt/certbot/bin/pip install certbot

シンボリックリンクを張る

ln -s /opt/certbot/bin/certbot /usr/bin/certbot

3.認証に80ポートを利用するため、WEBサーバを停止する

そもそも動いていなくても、影響がないためコマンドを実行する。
・nginx

systemctl stop nginx

・apache

systemctl stop httpd

certbot実行

certbot certonly --standalone

以下の問が来るためそれぞれ回答する。
1) 証明書の期限切れを通知するメールアドレス -> メールアドレスを入力。
2) 利用規約に同意しますか? -> y(同意)
3) メールアドレス情報を共有しますか? -> n(共有しない)
4) 証明書に記載するドメイン名を入力してください。->  example.com(ドメイン名を入力)

Successfully received certificate. と出力されれば完了。
これで SSL 証明書が取得でき、/etc/letsencrypt/live/{ドメイン名}配下に作成されます。

5.confファイル編集

・nginx

server {
	...
	server_name		example.com;
	root			/var/www/html;
	listen 443 ssl;
	ssl_certificate			/etc/letsencrypt/live/example.com/fullchain.pem; # ★
	ssl_certificate_key		/etc/letsencrypt/live/example.com/privkey.pem; # ★
	...
}

★がついている行、example.comを、4.で指定したドメイン名に変更する。

・apache

<VirtualHost *:443>
	ServerName		example.com
	DocumentRoot	/var/www/html
	SSLEngine on
	SSLCertificateFile			/etc/letsencrypt/live/example.com/cert.pem # ★
	SSLCertificateKeyFile		/etc/letsencrypt/live/example.com/privkey.pem # ★
	SSLCertificateChainFile		/etc/letsencrypt/live/example.com/chain.pem # ★
</VirtualHost>

★がついている行、example.comを、4.で指定したドメイン名に変更する。

6.サーバ起動

・nginx

systemctl start nginx

・apache

systemctl start httpd

7.cron設定(自動更新)

Let's Encriptの証明書は3ヶ月で有効期限が切れるため、自動更新を設定しておくと期限切れを防げる。
なお、Amazon Linux2023にはデフォルトでcronが存在しないため、導入してから本作業を実施する。
導入参考:https://note.com/santavillage/n/nf7e9c98ff06f

crontab -e

・nginx

30  1  *  *  *  root    certbot renew --post-hook "systemctl reload nginx" --no-self-upgrade # Nginx

・apache

30  1  *  *  *  root    certbot renew --post-hook "systemctl reload httpd" --no-self-upgrade # Apache

エラーが気にならないなら両方記述しても問題はないけど。

いいなと思ったら応援しよう!