ブログ | NGINX

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

アミール・ラウダットのサムネイル
アミール・ラウダット
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ディレクティブを使用してドメイン名 (および存在する場合はそのバリエーション) を指定します。

    server {    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 reload

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は、証明書の生成が成功したことを示すメッセージと、サーバー上の証明書の場所を指定します。

    Congratulations! You have successfully enabled https://example.com and https://www.example.com 
    -------------------------------------------------------------------------------------
    IMPORTANT NOTES: 
    
    Congratulations! Your certificate and chain have been saved at: 
    /etc/letsencrypt/live/example.com/fullchain.pem 
    Your key file has been saved at: 
    /etc/letsencrypt/live/example.com//privkey.pem
    Your cert will expire on 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; # managed by Certbot

    # RSA certificate
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot

    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    # Redirect non-https traffic to https
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by 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 renew --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 の一部です。 q。"