📡

Route53の設定方法

に公開

この記事では、AWSのRoute 53を使って「独自ドメインの取得」「DNS の設定」「SSL 化(HTTPS 対応)」を行う手順を解説します。

使用サービス

  • AWS Route 53
    • ドメイン登録
    • DNS 管理
  • AWS Certificate Manager(SSL 証明書の発行)
  • EC2 (Amazon Linux 2023対応)

リージョン

1. ドメインの取得

  1. AWS マネジメントコンソール → 「Route 53」→「登録済みドメイン」→「ドメインを登録」
  2. ドメイン検索で希望のドメインを入力し、利用可能なものを選択して「チェックアウト」
    • 今回は開発用のため、安価なドメインを選択
  3. 「自動更新」のチェックを外す
  4. 連絡先情報を入力
  5. 数分でドメインが登録完了

2. ホストゾーンと DNS 設定

  1. 「Route 53」→「ホストゾーン」→ 取得したドメイン名のゾーンを選択

  2. 「レコードを作成」→ 画面右の「ウィザードに切り替える」

  3. 「シンプルルーティング」を選択し、「シンプルなレコードを定義」

  4. 以下のように設定:

    項目 内容
    レコード名 (空白)=ルートドメイン
    レコードタイプ A(IPv4)
    EC2 のパブリック IP アドレス

  5. 同じように「www」レコードも作成(IP アドレスは同じ)


3. DNS の動作確認

DNSの設定が出来ているか確認します

nslookup ドメイン名


IP アドレスが返れば OK!

4. ブラウザでアクセス確認

ドメインでブラウザにアクセスします

問題なく表示されています!

※ ただし、この時点では「http」通信のため暗号化されていません。
続いて、HTTPS(SSL)の設定を行いましょう。

5. SSL 化(HTTPS 対応)

AWS Certificate Manager(ACM)を使って無料の SSL 証明書を発行します。

手順:証明書のリクエスト

  1. AWS マネジメントコンソール → Certificate Manager

  2. 「証明書をリクエスト」をクリック

  3. 次のように設定します:

    • 証明書タイプ:パブリック証明書
    • 検証方法:DNS 検証(推奨)
    • キーアルゴリズム:RSA 2048
  4. 作成された証明書の一覧から、対象の証明書を選択し
    「Route 53 でレコードを作成」 をクリック

  5. 自動で検証用レコードが表示されるので、「レコードを作成」をクリックして DNS に反映します


ステータス確認

  • 数分~数十分後、証明書のステータスが「発行済み」になれば OK

これで SSL の準備は完了です。
次は Laravelや Nginx 側で https 設定を行います

6. Laravel

.envファイルの「APP_URL」を「https」へ変更します

APP_URL=https://ドメイン名

7. EC2

7-1. Nginx のドメイン設定

まずは EC2 に SSH 接続し、/etc/nginx/conf.d/your-app.conf ファイル内の server_name を独自ドメインに変更します。
※ 権限エラーが出る場合は root に切り替えてから操作してください。

sudo su root
server {
    listen 80;
    server_name 〇〇; 👈️ドメイン名に修正
    #例) server_name aws-original-test-developer.com
}

7-2. Certbot のインストール

Let's Encrypt の証明書を取得するため、Certbot と Nginx 向けプラグインをインストールします。

sudo dnf install -y certbot
sudo dnf install -y python3-certbot-nginx

certbot --version
#certbot 2.6.0

7-3. cronie のインストールと cron 起動

Amazon Linux 2023 には cron が標準搭載されていないため、cronie をインストールします。
これにより証明書の自動更新を定期実行できます。

sudo dnf install -y cronie
sudo systemctl enable --now crond
systemctl status crond

7-4. Nginx の一時停止

Certbot はポート 80 を使って認証を行うため、Nginx が稼働していると競合します。
そのため、証明書取得前に Nginx を一時停止します。

sudo systemctl stop nginx

7-5. 証明書の取得(standalone モード)

Certbot の --standalone モードを使用し、Nginx を介さずに証明書を取得します。

sudo certbot certonly --standalone -d aws-original-test-developer.com -d www.aws-original-test-developer.com

7-6. 証明書取得後の状況確認

項目 状況
メール登録と利用規約の同意 ✅ 完了
証明書の取得 ✅ 成功
証明書保存先 /etc/letsencrypt/live/aws-original-test-developer.com/
自動更新スケジュールの設定 ✅ cron にて設定済み

7-7. 保存された証明書ファイルの内容

ファイル名 内容 Nginx での用途
cert.pem サーバー証明書(このドメイン用) ssl_certificate に指定
privkey.pem 秘密鍵 ssl_certificate_key に指定
chain.pem 中間証明書(認証局の証明連鎖) 通常は使用しない
fullchain.pem cert.pem + chain.pem の結合 ✅ 一般的に使用
README 説明ファイル 使用しない

nginx再起動

sudo systemctl restart nginx

7-8. 自動更新のスケジュールを登録

crontab に以下のスケジュールを登録することで、証明書の自動更新と Nginx の再読み込みを行うようにします。

sudo crontab -e

次の1行を追加

0 4 * * * /usr/bin/certbot renew --quiet && /bin/systemctl reload nginx

7-9. Nginx の SSL 対応設定(laravel.conf)

/etc/nginx/conf.d/your-app.conf に以下のような HTTPS 対応ブロックを追加してください。

📌 ドメインやパスはご自身の環境に合わせて修正ください

# HTTP → HTTPS リダイレクト
server {
    listen 80;
    server_name aws-original-test-developer.com www.aws-original-test-developer.com;
    return 301 https://$host$request_uri;
}

# HTTPS 設定
server {
    listen 443 ssl;
    server_name aws-original-test-developer.com www.aws-original-test-developer.com;

    root /var/www/Laravel12_test/public;
    index index.php index.html;

    ssl_certificate     /etc/letsencrypt/live/aws-original-test-developer.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/aws-original-test-developer.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php-fpm/www.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

以上で設定は完了です


SSL 化の確認

ブラウザで https://aws-original-test-developer.com にアクセスし、
🔒 鍵マークが表示されていれば SSL 設定は完了です。

✅ まとめ

  • Route 53 で独自ドメインを登録し、DNS 設定を完了
  • Laravel アプリにドメインを組み込み、ブラウザで接続確認済み
  • Certbot を使って証明書を登録し、Nginx 端での HTTPS 実現に成功

この手順が、SSL 化を実現したい方の参考になれば幸いです!

🔗 参考記事

Laravel を AWS へデプロイ | VPC・EC2 構築から公開まで
https://zenn.dev/morikuma/articles/1a947cb8243406

Discussion