ブログ | NGINX

アップデート: NGINX で無料の Let’s Encrypt SSL/TLS 証明書を使用する

NGINX-F5 水平黒タイプ RGB の一部
アミール・ラウダットのサムネイル
アミール・ラウダット
2021年1月28日公開

編集者 – NGINX で Let’s Encrypt を使用するための元の手順を詳しく説明したブログ投稿 (2016 年 2 月) は、ここにリダイレクトされます。 その投稿内の手順は非推奨です。

この投稿は、 certbot-auto の電子フロンティア連盟(EFF)はこれを廃止した。 証明書ボット 1.10.0 DebianとUbuntuでは 証明書ボット 1.11.0 その他のすべてのオペレーティング システムの場合。 詳細と代替インストール方法については、 EFF のこの投稿を参照してください。

また、Electronic Frontier Foundation の Peter Eckersley 氏と Yan Zhu 氏が当時新しかった Let's Encrypt 認証局を紹介している、nginx.conf 2015 のブログ投稿もご覧ください。

ウェブサイトの SSL/TLS 暗号化により、検索ランキングが上がり、ユーザーのセキュリティが向上することはよく知られています。 しかし、ウェブサイト所有者が SSL を導入するのを妨げる障壁がいくつかあります。

最も大きな障壁の 2 つは、証明書の取得にかかるコストと手作業のプロセスでした。 しかし今では、 Let's Encrypt の登場により、それらの心配はなくなりました。 Let's Encrypt は、SSL/TLS 暗号化を誰でも無料で利用できるようにします。

Let’s Encrypt は、無料で自動化されたオープンな認証局 (CA) です。 はい、その通りです。 SSL/TLS 証明書は無料です。 Let’s Encrypt によって発行された証明書は、Windows XP SP3 上の Internet Explorer などの古いブラウザを含む、今日のほとんどのブラウザで信頼されています。 さらに、Let’s Encrypt は証明書の発行と更新の両方を完全に自動化します。

このブログ記事では、Let’s Encrypt クライアントを使用して証明書を生成する方法と、それらを使用するように NGINX Open Source と NGINX Plus を自動的に構成する方法について説明します。

Let’s Encryptの仕組み

証明書を発行する前に、Let’s Encrypt はドメインの所有権を検証します。 ホスト上で実行されている Let’s Encrypt クライアントは、必要な情報を含む一時ファイル (トークン) を作成します。 次に、Let’s Encrypt 検証サーバーは HTTP リクエストを送信してファイルを取得し、トークンを検証します。これにより、ドメインの DNS レコードが Let’s Encrypt クライアントを実行しているサーバーに解決されることが確認されます。

前提条件

Let’s Encrypt を使い始める前に、次のことを行う必要があります。

  • NGINXまたはNGINX Plusがインストールされていること。
  • 証明書の登録ドメイン名を所有または管理します。 登録済みのドメイン名がない場合は、 GoDaddydnsexitなどのドメイン名登録機関を使用できます。
  • ドメイン名とサーバーのパブリック IP アドレスを関連付ける DNS レコードを作成します。

これで、NGINX Open Source または NGINX Plus (読みやすくするために、以降は単にNGINXと呼びます) を使用して Let's Encrypt を簡単にセットアップできます。

注記: このブログ投稿で概説されている手順を Ubuntu 16.04 (Xenial) でテストしました。

1. Let’s Encryptクライアントをダウンロードする

まず、Let's Encrypt クライアントcertbotをダウンロードします。

先ほど述べたように、Ubuntu 16.04 で手順をテストしました。このプラットフォームでは次のコマンドが適切です。

$ apt-get update $ sudo apt-get install certbot $ apt-get install python-certbot-nginx

Ubuntu 18.04 以降では、Python 3 バージョンを置き換えます。

$ apt-get update $ sudo apt-get install certbot $ apt-get install python3-certbot-nginx

2. NGINXのセットアップ

certbot は、 SSL/TLS 用に NGINX を自動的に構成できます。 証明書を要求しているドメイン名を含むserver_nameディレクティブを含む NGINX 構成内のサーバーブロックを検索して変更します。 この例では、ドメインはwww.example.comです。

  1. 新規の NGINX インストールから開始すると仮定して、テキスト エディターを使用して、 /etc/nginx/conf.dディレクトリにdomain‑name .conf (この例ではwww.example.com.conf ) という名前のファイルを作成します。

  2. server_nameディレクティブを使用してドメイン名 (および存在する場合はそのバリエーション) を指定します。

    サーバー { listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    server_name example.com www.example.com;
    }
  3. ファイルを保存し、次のコマンドを実行して設定の構文を確認し、NGINX を再起動します。

    $ nginx -t && nginx -s リロード

3. SSL/TLS証明書を取得する

certbotの NGINX プラグインは、必要に応じて NGINX の再構成と構成の再読み込みを行います。

  1. NGINX プラグインを使用して証明書を生成するには、次のコマンドを実行します。

    $ sudo certbot --nginx -d example.com -d www.example.com
  2. certbotからのプロンプトに応答して HTTPS 設定を構成します。これには、電子メール アドレスの入力と Let's Encrypt の利用規約への同意が含まれます。

  3. 証明書の生成が完了すると、NGINX は新しい設定で再読み込みされます。certbotは、証明書の生成が成功したことを示すメッセージと、サーバー上の証明書の場所を指定します。

    おめでとう! https://example.com と https://www.example.com が正常に有効化されました
    --------------------------------------------------------------------------------------------------
    重要な注意事項: 
    
    おめでとう! 証明書とチェーンは次の場所に保存されています: 
    /etc/letsencrypt/live/example.com/fullchain.pem 
    キー ファイルは次の場所に保存されています: 
    /etc/letsencrypt/live/example.com//privkey.pem
    証明書の有効期限は 2017-12-12 です。

    注記: Let's Encrypt 証明書は 90 日後に期限切れになります (例では 2017-12-12)。 証明書の自動更新については、以下の「Let's Encrypt 証明書の自動更新」を参照してください。

domain‑name .confを見ると、 certbotによって変更されたことがわかります。

server { listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;

listen 443 ssl; # Certbot によって管理

# RSA 証明書
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # Certbot によって管理
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # Certbot によって管理

include /etc/letsencrypt/options-ssl-nginx.conf; # Certbot によって管理

# 非 https トラフィックを https にリダイレクト
if ($scheme != "https") {
return 301 https://$host$request_uri;
} # Certbot によって管理
}

4. Let’s Encrypt 証明書を自動的に更新する

Let's Encrypt 証明書は 90 日後に期限切れになります。 証明書を自動的に更新することをお勧めします。 ここでは、これを実行するために、既存のcrontabファイルにcronジョブを追加します。

  1. crontabファイルを開きます。

    $ crontab -e
  2. 毎日実行するcertbotコマンドを追加します。 この例では、毎日正午にコマンドを実行します。 このコマンドは、サーバー上の証明書が今後 30 日以内に期限切れになるかどうかを確認し、期限切れになる場合は更新します。 --quietディレクティブは、 certbot に出力を生成しないように指示します。

    0 12 * * * /usr/bin/certbot 更新 --quiet
  3. ファイルを保存して閉じます。 インストールされているすべての証明書は自動的に更新され、再ロードされます。

  4. まとめ

    登録されたドメイン名の SSL/TLS 証明書を生成するために、Let’s Encrypt エージェントをインストールしました。 証明書を使用するように NGINX を構成し、証明書の自動更新を設定しました。 NGINX および NGINX Plus 用の Let’s Encrypt 証明書を使用すると、シンプルで安全な Web サイトを数分以内に立ち上げて実行できます。

    NGINX Plus で Let's Encrypt を実際に試すには、今すぐ30 日間の無料トライアルを開始するか、弊社にお問い合わせの上、使用事例についてご相談ください

    関連ドキュメント

    上流サーバーへの HTTP トラフィックの保護
    上流サーバーへの TCP トラフィックの保護
    NGINX SSL 終了


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"