HTTPSとは
HTTPS(HTTP Secure / HTTP over TLS)は、HTTPプロトコルをTLS(Transport Layer Security)で暗号化したセキュアな通信プロトコルです。ポート443を使用し、クライアント(ブラウザ)とサーバー間のすべての通信を暗号化します。
2014年のHTTPS Everywhere運動以降、GoogleはHTTPSをSEOランキング要因に追加し、現在ではほぼすべてのWebサイトがHTTPSを使用しています。Let's Encryptの登場により、無料でTLS証明書を取得できるようになりました。
HTTPSのメリット
- 通信の暗号化:盗聴からデータを保護
- データ完全性:改ざんを検知
- 認証:正しいサーバーと通信していることを保証
- SEO向上:GoogleがHTTPSを優遇
- 信頼性:ブラウザの「鍵」アイコンでユーザーに安心感
AIエンジニアとしての実体験
AIエンジニアとして、機械学習モデルのAPIを公開する際、HTTPSは必須です。以下はNginxでのHTTPS設定例:
server {
listen 80;
server_name api.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name api.example.com;
ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;
# セキュリティヘッダー
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
location / {
proxy_pass http://localhost:8000;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Let's Encryptによる無料証明書
# certbotのインストール(Ubuntu)
sudo apt install certbot python3-certbot-nginx
# 証明書の取得と自動設定
sudo certbot --nginx -d api.example.com
# 自動更新の確認
sudo certbot renew --dry-run
HSTS(HTTP Strict Transport Security)
HSTSは、ブラウザに対してHTTPSのみを使用するよう強制するセキュリティ機構です:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
トラブル事例と対策
⚠️ Mixed Content警告
症状:HTTPSページでHTTPリソースを読み込んでいる
対策:すべてのリソースをHTTPSで配信。Content-Security-Policy: upgrade-insecure-requests を設定。
