以下にマークダウン形式で整形しました。
⸻
ドメイン設定・SSL証明書・HTTPS化 完全手順書
概要
この手順書では、お名前.comで取得したドメインをAWS EC2上のDjangoアプリケーションに設定し、SSL証明書を取得してHTTPS化するまでの全工程を説明します。
⸻
用語解説
AWS関連用語 • Route53: DNSサービス。ドメインとIPの紐付けを管理。 • ACM: AWS Certificate Manager。SSL証明書を発行・管理。 • IAM: AWSのユーザー・権限管理サービス。 • EC2: AWSの仮想サーバーサービス。
ネットワーク関連用語 • DNS: ドメイン名をIPに変換。 • ネームサーバー: DNSクエリに応答するサーバー。 • Aレコード: ドメインとIPの対応を設定。 • CNAMEレコード: ドメインと別のドメインを対応。 • SSL/TLS証明書: 暗号化通信を可能にする証明書。
⸻
手順1: AWS Route53でHosted Zoneを作成
aws route53 create-hosted-zone \ --name higakazuya.online \ --caller-reference $(date +%s)
ネームサーバー確認:
aws route53 list-hosted-zones
⸻
手順2: お名前.comでネームサーバー変更 1. お名前.com Navi にログイン 2. 「ドメイン設定」→「ネームサーバーの設定」へ 3. 対象ドメイン選択 4. 「他のネームサーバーを利用」を選択 5. Route53のネームサーバーを4つ入力 6. 設定を保存
反映確認(最大48時間):
dig NS higakazuya.online nslookup higakazuya.online 8.8.8.8
⸻
手順3: Route53でAレコード設定
Hosted Zone ID取得
aws route53 list-hosted-zones --query "HostedZones[?Name=='higakazuya.online.'].Id" --output text
Aレコード登録
aws route53 change-resource-record-sets \ --hosted-zone-id /hostedzone/YOUR_ZONE_ID \ --change-batch '{ "Changes": [{ "Action": "CREATE", "ResourceRecordSet": { "Name": "higakazuya.online", "Type": "A", "TTL": 300, "ResourceRecords": [{ "Value": "YOUR_EC2_PUBLIC_IP" }] } }] }'
⸻
手順4: SSL証明書の取得(ACM)
aws acm request-certificate \ --domain-name higakazuya.online \ --validation-method DNS \ --region us-east-1
検証用CNAMEレコード確認と追加:
aws acm describe-certificate --certificate-arn YOUR_CERTIFICATE_ARN
aws route53 change-resource-record-sets \ --hosted-zone-id /hostedzone/YOUR_ZONE_ID \ --change-batch '{ "Changes": [{ "Action": "CREATE", "ResourceRecordSet": { "Name": "VALIDATION_RECORD_NAME", "Type": "CNAME", "TTL": 300, "ResourceRecords": [{ "Value": "VALIDATION_RECORD_VALUE" }] } }] }'
ステータス確認:
aws acm describe-certificate --certificate-arn YOUR_CERTIFICATE_ARN
⸻
手順5: NginxのHTTPS設定
設定ファイル /etc/nginx/sites-available/kazuya_blog_https
server { listen 80; server_name higakazuya.online; return 301 https://$server_name$request_uri; }
server { listen 443 ssl; server_name higakazuya.online;
ssl_certificate /etc/ssl/certs/higakazuya.online.crt;
ssl_certificate_key /etc/ssl/private/higakazuya.online.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
alias /home/ubuntu/kazuya_blog/staticfiles/;
}
}
SSL証明書の取得と設定反映
sudo certbot --nginx -d higakazuya.online sudo ln -s /etc/nginx/sites-available/kazuya_blog_https /etc/nginx/sites-enabled/ sudo nginx -t sudo nginx -s reload
⸻
手順6: Django設定の更新
production.pyの編集:
SECURE_SSL_REDIRECT = True SESSION_COOKIE_SECURE = True CSRF_COOKIE_SECURE = True SECURE_BROWSER_XSS_FILTER = True SECURE_CONTENT_TYPE_NOSNIFF = True
ALLOWED_HOSTS = ['higakazuya.online', 'www.higakazuya.online']
⸻
手順7: 動作確認
nslookup higakazuya.online curl -I http://higakazuya.online curl -I https://higakazuya.online
ブラウザで https://higakazuya.online にアクセスして鍵マークを確認
⸻
トラブルシューティング
DNS関連 • 症状: ドメインが解決されない • 確認: dig NS • 対処: お名前.comの設定を再確認
SSL証明書関連 • 症状: 証明書エラー • 確認: describe-certificate • 対処: CNAMEレコードのミスを修正
Nginx関連 • 症状: 502 Bad Gateway • 確認: nginx -t • 対処: Gunicornの起動を確認
⸻
完了チェックリスト • Route53でHosted Zone作成完了 • お名前.comでネームサーバー変更完了 • Route53でAレコード設定完了 • ACMでSSL証明書取得完了 • NginxのHTTPS設定完了 • DjangoのHTTPS設定完了 • ブラウザでHTTPS接続確認完了
⸻
注意事項 1. DNS反映時間: 最大48時間要する場合あり 2. ACM証明書: 自動更新される(90日) 3. セキュリティ強化: 本番環境ではWAFや監視ツールも検討 4. バックアップ: 設定前に取得を推奨
⸻