AWS EC2 Let's Encrypt 無料SSL証明書設定方法(Nginx)
前提条件
AmazonLinux2023で今回は無料SSL証明書設定方法を記載いたします。
※事前に対象EC2サーバーの「パブリック IPv4 アドレス」をDNSに登録しましょう。
Route53の登録方法は下記の内容をご参考にしてください。
セキュリティグループ設定方法を下記の内容をご参考にしてください。
(80番、443番ポートは開放してください。)
Let's Encrypt 無料SSL証明書設定方法(Nginx)
1. 対象のEC2サーバーにログインして下記のコマンドを入力し実行してください。
| コマンド | 説明 |
|---|---|
| $ sudo -i | rootユーザーに昇格いたします。 |
| # yum install -y nginx | Nginxをインストールいたします。 |
| # yum install -y certbot | certbotをインストールいたします。 |
| # systemctl enable nginx | サーバー再起動時に自動起動いたします。 |
| # systemctl start nginx | Nginxを起動いたします。 |
2. SSL証明書を発行いたします。(以前に対象のEC2サーバーのパブリック IPv4 アドレスをDNSの登録してください。)
※DNSにサーバーのIPアドレスとドメイン名が登録されてないとエラーになる場合あります。
下記のコマンドを入力し実行してください。
| コマンド | 説明 |
|---|---|
| # certbot certonly --webroot -w /usr/share/nginx/html -d www.d1j.jp --key-type rsa --cert-name www.d1j.jp --register-unsafely-without-email --agree-tos -n | ドメイン名はDNSに登録したドメインを入力してください。 -d のあとは利用したいドメイン名(FQDN)になります。 /usr/share/nginx/htmlの配下にLet's Encrypt認証ファイルが作成されます。 Nginxは起動状態にいたします。(80番ポート利用します。) --cert-nameは内部ファイルのラベルになります。 |
| コマンド |
|---|
| # certbot certonly --webroot -w /usr/share/nginx/html -d www.d1j.jp --key-type rsa --cert-name www.d1j.jp --register-unsafely-without-email --agree-tos -n Saving debug log to /var/log/letsencrypt/letsencrypt.log Account registered. Requesting a certificate for www.d1j.jp Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/www.d1j.jp/fullchain.pem Key is saved at: /etc/letsencrypt/live/www.d1j.jp/privkey.pem This certificate expires on 2026-02-13. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le |
3. viでnginx.confを修正いたします。
| コマンド | 説明 |
|---|---|
| # vi /etc/nginx/nginx.conf | viでnginx.confを修正いたします。 |
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name _;
root /usr/share/nginx/html;
ssl_certificate "/etc/letsencrypt/live/www.d1j.jp/fullchain.pem";
ssl_certificate_key "/etc/letsencrypt/live/www.d1j.jp/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers PROFILE=SYSTEM;
ssl_prefer_server_ciphers on;
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
| SSLCertificateFileとSSLCertificateKeyFileの部分を さきほど発行したSSL証明書発行の場所に修正いたしましょう。 必要な設定のコメントアウトは外してください。 |
4. Nginxの再起動を行います。以下のコマンドを入力し実施してください。
| コメント | 説明 |
|---|---|
| # systemctl restart nginx | Nginxを再起動いたします。 |
5. 最後にブラウザで対象ドメインにアクセスしてみましょう。

6. Let's EncryptのSSL証明書は、有効期限が90日間になっております。
下記のコマンドを実施してください。cronがうまく動作しない場合はサーバーの再起動を実施してください。
※certbot renewで「--force-renew」を利用した場合回数制限があります。
1週間5回程度になります。注意してください。
| コマンド | 説明 |
|---|---|
| $ sudo -i | rootユーザーになります。 |
| # timedatectl set-timezone Asia/Tokyo # date | 日本時間に変更いたします。 dateコマンドで時間を確認いたします。 |
| # yum install -y cronie | cronをインストールいたします。 |
| # systemctl enable crond | サーバー再起動時に自動起動いたします。 |
| # systemctl start crond | cronを起動いたします。 |
| # crontab -e | cronを編集いたします。 |
| 00 3 1 * * /usr/bin/certbot renew --force-renew --deploy-hook "systemctl restart nginx" | viで記述いたします。毎月1日の3時00分にSSL証明書を更新いたします。 一緒にNginxの再起動も実施いたします。 |
以上で「AWS EC2 Let's Encrypt 無料SSL証明書設定方法(Nginx)」を完了いたしました。

