Let's EncryptによるHTTPSの有効化
Let's Encryptの無料TLS証明書でWebサーバーを保護します。Certbotをインストールして証明書を取得・自動更新し、NginxまたはApacheを設定してHTTPリダイレクト付きでHTTPS通信を提供します。
「Let's EncryptによるHTTPSの有効化」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
HTTPSが不可欠な理由
サイトをホストし、バーチャルホストを設定できても、平文のHTTPで提供すると通信が盗聴や改ざんにさらされます。現在のブラウザーはHTTPサイトを「安全ではありません」と警告します。
HTTPSはTLS証明書を使って通信を暗号化します。Let's Encryptのおかげで、これらの証明書を無料で自動取得できます。
Let's Encryptの仕組み
Let's Encryptは、90日間有効な証明書を無料で発行する認証局です。ドメインを管理していることを証明するために、自動化されたチャレンジを伴うACMEプロトコルを使用します。
Certbotというクライアントが、証明書の要求、インストール、更新を代わりに処理します。
前提条件
証明書を要求する前に、次の点を確認してください。
- ドメインのDNS AレコードがサーバーのIPを指している
- ファイアウォールでポート80と443が開いている
- Webサーバーが稼働し、そのドメインを提供している
チャレンジでは、インターネットからポート80に到達できる必要があります。
sudo ufw allow 'Nginx Full'
dig +short yourdomain.comCertbotのインストール
Certbotはパッケージとして利用でき、NginxやApache用のプラグインを使うと設定変更を自動化できます。
sudo apt install certbot python3-certbot-nginx
# For Apache:
sudo apt install certbot python3-certbot-apache証明書の取得(Nginx)
Nginxプラグインは証明書を取得するだけでなく、それを使用するようにサーバーブロックも編集します。-dでドメインを指定します。
Certbotは一致するサーバーブロックを自動的に検出します。
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com証明書の取得(Apache)
Apacheでは、ワークフローはapacheプラグインを使う場合と同じです。Certbotがバーチャルホストを更新し、SSLを有効にします。
sudo certbot --apache -d yourdomain.comHTTPSリダイレクトの強制
セットアップ中に、HTTPからHTTPSへリダイレクトするかどうかをCertbotが尋ねます。はいを選択してください。スキップした場合は、HTTPサーバーブロックにリダイレクトを手動で追加します。
server {
listen 80;
server_name yourdomain.com;
return 301 https://$host$request_uri;
}自動更新
証明書の有効期限は90日後に切れますが、Certbotは証明書を自動的に更新するsystemdタイマー(またはcronジョブ)をインストールします。dry runを使えば、更新処理を安全にテストできます。
sudo certbot renew --dry-run
systemctl list-timers | grep certbot証明書の確認
サイトにアクセスして証明書を確認し、HTTPSが機能していることを確認します。CLIからは、管理対象の証明書を一覧表示して有効期限を確認できます。
sudo certbot certificates
curl -svI https://yourdomain.com 2>&1 | grep -i 'subject\|expire'TLSの強化
最高レベルのセキュリティを実現するには、TLS設定を調整します。古いプロトコルを無効にし、強力な暗号方式を優先し、ブラウザーが常にHTTPSを使用するようHSTSを有効にします。
MozillaのSSL Configuration Generatorなどのツールを使うと、そのまま貼り付けられる設定を生成できます。
ssl_protocols TLSv1.2 TLSv1.3;
add_header Strict-Transport-Security 'max-age=63072000' always;ベストプラクティス
HTTPSを安定して運用するには、次の点に注意します。
- 常にHTTPからHTTPSへリダイレクトする
- セットアップ後に
--dry-runで更新をテストする - 80番ポートと443番ポートの両方を開く。更新には80番ポートが必要
- HSTSを有効にし、最新のTLSプロトコルのみを使用する
クイックチェック
HTTPSに関する知識をテストしましょう。
まとめ
無料のTLSを使ってWebサーバーを保護しました。
- Nginx/ApacheプラグインとともにCertbotをインストールした
certbot --nginx -dで証明書を取得した- HTTP → HTTPSのリダイレクトを強制した
- dry runで自動更新を確認した
これで静的サイトとバーチャルホストは、デフォルトで暗号化されたトラフィックを提供します。
よくある質問
「Let's EncryptによるHTTPSの有効化」レッスンは無料ですか?
はい。「Let's EncryptによるHTTPSの有効化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「Let's EncryptによるHTTPSの有効化」で何を学びますか?
Let's Encryptの無料TLS証明書でWebサーバーを保護します。Certbotをインストールして証明書を取得・自動更新し、NginxまたはApacheを設定してHTTPリダイレクト付きでHTTPS通信を提供します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「Let's EncryptによるHTTPSの有効化」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Nginx/Apacheのインストール
- 静的Webサイトのホスティング
- 基本的なバーチャルホスト設定
- Let's EncryptによるHTTPSの有効化