編集者 – 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 検証サーバーは HTTP リクエストを送信してファイルを取得し、トークンを検証します。これにより、ドメインの DNS レコードが Let’s Encrypt クライアントを実行しているサーバーに解決されることが確認されます。
Let’s Encrypt を使い始める前に、次のことを行う必要があります。
これで、NGINX Open Source または NGINX Plus (読みやすくするために、以降は単にNGINXと呼びます) を使用して Let's Encrypt を簡単にセットアップできます。
注記: このブログ投稿で概説されている手順を Ubuntu 16.04 (Xenial) でテストしました。
まず、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
certbot は、
SSL/TLS 用に NGINX を自動的に構成できます。 証明書を要求しているドメイン名を含むserver_name
ディレクティブを含む NGINX 構成内のサーバー
ブロックを検索して変更します。 この例では、ドメインはwww.example.comです。
新規の NGINX インストールから開始すると仮定して、テキスト エディターを使用して、 /etc/nginx/conf.dディレクトリにdomain‑name .conf (この例ではwww.example.com.conf ) という名前のファイルを作成します。
server_name
ディレクティブを使用してドメイン名 (および存在する場合はそのバリエーション) を指定します。
サーバー { listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name example.com www.example.com;
}
ファイルを保存し、次のコマンドを実行して設定の構文を確認し、NGINX を再起動します。
$ nginx -t && nginx -s リロード
certbot
の NGINX プラグインは、必要に応じて NGINX の再構成と構成の再読み込みを行います。
NGINX プラグインを使用して証明書を生成するには、次のコマンドを実行します。
$ sudo certbot --nginx -d example.com -d www.example.com
certbot
からのプロンプトに応答して HTTPS 設定を構成します。これには、電子メール アドレスの入力と Let's Encrypt の利用規約への同意が含まれます。
証明書の生成が完了すると、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 によって管理
}
Let's Encrypt 証明書は 90 日後に期限切れになります。 証明書を自動的に更新することをお勧めします。 ここでは、これを実行するために、既存のcrontabファイルにcron
ジョブを追加します。
crontabファイルを開きます。
$ crontab -e
毎日実行するcertbot
コマンドを追加します。 この例では、毎日正午にコマンドを実行します。 このコマンドは、サーバー上の証明書が今後 30 日以内に期限切れになるかどうかを確認し、期限切れになる場合は更新します。 --quiet
ディレクティブは、 certbot に
出力を生成しないように指示します。
0 12 * * * /usr/bin/certbot 更新 --quiet
ファイルを保存して閉じます。 インストールされているすべての証明書は自動的に更新され、再ロードされます。
登録されたドメイン名の SSL/TLS 証明書を生成するために、Let’s Encrypt エージェントをインストールしました。 証明書を使用するように NGINX を構成し、証明書の自動更新を設定しました。 NGINX および NGINX Plus 用の Let’s Encrypt 証明書を使用すると、シンプルで安全な Web サイトを数分以内に立ち上げて実行できます。
NGINX Plus で Let's Encrypt を実際に試すには、今すぐ30 日間の無料トライアルを開始するか、弊社にお問い合わせの上、使用事例についてご相談ください。
「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"