想定読者
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 が成功
よくあるエラーと対処法
- HTTPでアクセスできない
確認項目:
DNSのAレコード
IPアドレス
Nginxの起動状態
セキュリティグループ(80番ポート)
- Certbotでエラー
原因のほとんど:
HTTP未確認
DNS未反映
- 403 Forbidden
echo “OK” | sudo tee /usr/share/nginx/html/index.html - 自動更新が動かない
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へ強制転送

コメントを残す