初心者向け:Amazon Linux 2023で独自ドメインをSSL化する手順(Nginx + Let’s Encrypt)


想定読者
Amazon Linux 2023(AL2023)を使っている方
EC2でWebサイトを公開している方
独自ドメインをHTTPS化したい方
SSL化の流れが分からない初心者の方
所要時間

30分〜1時間程度(DNS反映時間は除く)

導入

Amazon Linux 2023環境で、独自ドメインをHTTPS化する手順をまとめます。

実際にやってみると、SSL証明書の発行そのものよりも、Nginxの設定場所やDNSの状態確認で詰まりやすいと感じました。特に「HTTPでアクセスできない状態のまま進めてしまう」と、Certbotでエラーになります。

この記事では、初心者でも再現できるように、最初から最後まで手順を省略せずに解説します。

この記事でできること
独自ドメインをサーバーに向ける
Nginxでドメイン設定を行う
Let’s EncryptでSSL証明書を発行する
HTTPからHTTPSへリダイレクトする
自動更新を確認する
前提条件
EC2でAmazon Linux 2023インスタンスを起動済み
SSHで接続できる
セキュリティグループで以下が許可されている
80(HTTP)
443(HTTPS)
独自ドメイン取得済み
DNSでAレコード設定済み(サーバーのIPを指している)

※ドメイン例として example.com を使用します

全体の流れ
Nginxをインストール
Nginxを起動
ドメイン設定を作成
HTTPでアクセス確認
Certbotをインストール
SSL証明書を発行
HTTPS確認
自動更新確認
手順
ステップ1:SSH接続
ssh -i your-key.pem ec2-user@サーバーのIPアドレス
なぜやるか

サーバー上で設定を行うためです。

詰まりやすいポイント

秘密鍵の権限エラーが出る場合:

chmod 400 your-key.pem
ステップ2:Nginxをインストール
sudo dnf update -y
sudo dnf install nginx -y
なぜやるか

WebサーバーとしてNginxを使用するためです。

詰まりやすいポイント

パッケージ管理は dnf を使用します。

ステップ3:Nginxを起動&自動起動設定
sudo systemctl start nginx
sudo systemctl enable nginx

状態確認:

sudo systemctl status nginx
なぜやるか

サーバー起動時に自動でNginxが立ち上がるようにするためです。

詰まりやすいポイント

active (running) になっていない場合はエラーを確認

ステップ4:Nginxのドメイン設定
sudo nano /etc/nginx/conf.d/example.com.conf

以下を記述:

server {
listen 80;
server_name example.com www.example.com;

root /usr/share/nginx/html;
index index.html;

location / {
    try_files $uri $uri/ =404;
}

}

設定確認:

sudo nginx -t

反映:

sudo systemctl reload nginx
なぜやるか

ドメインアクセス時の表示内容を定義するためです。

詰まりやすいポイント
conf.d 配下に作る必要がある
セミコロン ; の付け忘れが多い
ステップ5:HTTPでアクセス確認(重要)

ブラウザで:

http://example.com
なぜやるか

SSL証明書発行前の最重要チェックです。

詰まりやすいポイント(かなり重要)

ここで表示されない場合:

DNS未反映
IPミス
セキュリティグループ設定ミス
Nginx未起動

この状態で進むと、Certbotは失敗します

ステップ6:Certbotインストール
sudo dnf install certbot python3-certbot-nginx -y
なぜやるか

SSL証明書を取得するためです。

ステップ7:SSL証明書発行
sudo certbot –nginx -d example.com -d www.example.com

選択:

メールアドレス入力
利用規約 → Y
リダイレクト → 2を選択
なぜやるか

証明書発行とHTTPS設定を自動で行うためです。

詰まりやすいポイント

エラー例:

unauthorized

原因:

DNSが未反映
ポート80が閉じている
HTTPでアクセスできない
ステップ8:HTTPS確認
https://example.com

確認内容:

鍵マーク表示
HTTP → HTTPSへ自動転送
ステップ9:自動更新確認
sudo systemctl list-timers | grep certbot

テスト:

sudo certbot renew –dry-run
なぜやるか

証明書は90日で期限切れになるためです。

実行結果

以下の状態になれば成功です:

HTTPSでアクセス可能
鍵マーク表示
HTTPがHTTPSへリダイレクトされる
nginx -t が成功
certbot renew –dry-run が成功
よくあるエラーと対処法

  1. HTTPでアクセスできない

確認項目:

DNSのAレコード
IPアドレス
Nginxの起動状態
セキュリティグループ(80番ポート)

  1. Certbotでエラー

原因のほとんど:

HTTP未確認
DNS未反映

  1. 403 Forbidden
    echo “OK” | sudo tee /usr/share/nginx/html/index.html
  2. 自動更新が動かない
    sudo systemctl status certbot.timer
    まとめ

Amazon Linux 2023でのSSL化は、手順自体はシンプルですが、

一番重要なのはこの2点です

HTTPで正常にアクセスできる状態を作る
DNSが正しくサーバーを向いている

実際にやってみて感じたのは、

SSLは「最後の仕上げ」であって、土台(HTTP)が整っていないと必ず失敗する

この流れを一度通しておくと、今後のサーバー構築でも迷いにくくなります。

最後になりますが,nginxでの443の記述を追加です。

Nginxに443(HTTPS)設定を追加

ここが今回のポイントです。

sudo nano /etc/nginx/conf.d/example.com.conf

最終形:

# HTTP → HTTPSリダイレクト
server {
listen 80;
server_name example.com www.example.com; return 301 https://$host$request_uri;
}# HTTPS設定
server {
listen 443 ssl;
server_name example.com www.example.com; root /usr/share/nginx/html;
index index.html; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; location / {
try_files $uri $uri/ =404;
}
}

なぜやるか

  • listen 443 ssl; → HTTPS通信を受ける
  • ssl_certificate → 証明書の場所
  • return 301 → HTTPからHTTPSへ強制転送

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP