0Pricing
Linux Server Deployment & SSH Mastery · レッスン

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.com

Certbotのインストール

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.com

HTTPSリダイレクトの強制

セットアップ中に、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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Nginx/Apacheのインストール
  2. 静的Webサイトのホスティング
  3. 基本的なバーチャルホスト設定
  4. Let's EncryptによるHTTPSの有効化
← Linux Server Deployment & SSH Masteryに戻る