開発者ドキュメント

Ubuntu16.04でLet’sEncryptを使用してNginxを保護する方法

序章

Let’s Encryptは認証局(CA)であり、無料の TLS / SSL証明書を簡単に取得してインストールできるため、Webサーバーで暗号化されたHTTPSを有効にできます。 必要な手順のほとんど(すべてではないにしても)を自動化しようとするソフトウェアクライアントCertbotを提供することにより、プロセスを簡素化します。 現在、証明書の取得とインストールのプロセス全体は、ApacheとNginxの両方で完全に自動化されています。

このチュートリアルでは、Certbotを使用してUbuntu 16.04でNginxの無料SSL証明書を取得し、証明書を自動的に更新するように設定します。

このチュートリアルでは、個別のサーバーブロックファイルではなく、デフォルトのNginx構成ファイルを使用します。 ドメインごとに新しいNginxサーバーブロックファイルを作成することをお勧めします。これは、いくつかの一般的な間違いを回避し、デフォルトファイルを意図したとおりのフォールバック構成として維持するのに役立ちます。 代わりにサーバーブロックを使用してSSLを設定する場合は、このNginxサーバーブロックをLet’sEncryptチュートリアルでフォローできます。

前提条件

このチュートリアルに従うには、次のものが必要です。

ステップ1—Certbotをインストールする

Let’s Encryptを使用してSSL証明書を取得するための最初のステップは、サーバーにCertbotソフトウェアをインストールすることです。

Certbotは非常に活発に開発されているため、Ubuntuが提供するCertbotパッケージは古くなっている傾向があります。 ただし、Certbot開発者は最新バージョンのUbuntuソフトウェアリポジトリを維持しているため、代わりにそのリポジトリを使用します。

まず、リポジトリを追加します。

  1. sudo add-apt-repository ppa:certbot/certbot

を押す必要があります ENTER 受け入れるために。 次に、パッケージリストを更新して、新しいリポジトリのパッケージ情報を取得します。

  1. sudo apt-get update

そして最後に、CertbotのNginxパッケージをインストールします apt-get.

  1. sudo apt-get install python-certbot-nginx

これでCertbotを使用する準備が整いましたが、NginxのSSLを構成するには、Nginxの構成の一部を確認する必要があります。

ステップ2—Nginxを設定する

CertbotはNginxのSSLを自動的に構成できますが、正しいものを見つけることができる必要があります server 設定でブロックします。 それは探してこれを行います server_name 証明書を要求しているドメインに一致するディレクティブ。

Nginxの新規インストールを開始する場合は、デフォルトの構成ファイルを更新できます。 で開く nano またはお気に入りのテキストエディタ。

  1. sudo nano /etc/nginx/sites-available/default

既存のものを探す server_name 下線を並べて置き換え、 _、ドメイン名:

/ etc / nginx / sites-available / default
. . .
server_name example.com www.example.com;
. . .

ファイルを保存して、エディターを終了します。

次に、構成編集の構文を確認します。

  1. sudo nginx -t

エラーが発生した場合は、ファイルを再度開いてタイプミスを確認してから、もう一度テストしてください。

構成の構文が正しい場合は、Nginxをリロードして新しい構成をロードします。

  1. sudo systemctl reload nginx

Certbotは正しいものを見つけることができるようになります server ブロックして更新します。 次に、HTTPSトラフィックを許可するようにファイアウォールを更新します。

ステップ3—ファイアウォールを介したHTTPSの許可

あなたが持っている場合 ufw ファイアウォールが有効になっている場合、前提条件ガイドで推奨されているように、HTTPSトラフィックを許可するように設定を調整する必要があります。 幸いなことに、Nginxはいくつかのプロファイルを登録しています ufw インストール時に。

次のように入力すると、現在の設定を確認できます。

  1. sudo ufw status

おそらく次のようになります。つまり、WebサーバーへのHTTPトラフィックのみが許可されます。

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

さらにHTTPSトラフィックを取り込むために、Nginx Fullプロファイルを許可してから、冗長なNginxHTTPプロファイルの許容値を削除できます。

  1. sudo ufw allow 'Nginx Full'
  2. sudo ufw delete allow 'Nginx HTTP'

ステータスは次のようになります。

  1. sudo ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)

これで、Certbotを実行して証明書を取得する準備が整いました。

ステップ4—SSL証明書を取得する

Certbotは、さまざまなプラグインを介してSSL証明書を取得するためのさまざまな方法を提供します。 Nginxプラグインは、Nginxの再構成と、必要に応じて構成の再読み込みを処理します。

  1. sudo certbot --nginx -d example.com -d www.example.com

これは実行されます certbot とともに --nginx プラグイン、使用 -d 証明書を有効にする名前を指定します。

初めてのランニングの場合 certbot、メールアドレスを入力して利用規約に同意するよう求められます。 そうした後、 certbot Let’s Encryptサーバーと通信し、チャレンジを実行して、証明書を要求しているドメインを制御していることを確認します。

それが成功した場合、 certbot HTTPS設定をどのように構成するかを尋ねられます。

Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. ------------------------------------------------------------------------------- 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. ------------------------------------------------------------------------------- Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

選択してからヒット ENTER. 構成が更新され、Nginxがリロードして新しい設定を取得します。 certbot プロセスが成功し、証明書が保存されている場所を通知するメッセージで締めくくられます。

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2017-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

証明書がダウンロード、インストール、およびロードされます。 を使用してWebサイトをリロードしてみてください https:// ブラウザのセキュリティインジケータに注目してください。 サイトが適切に保護されていることを示す必要があります。通常は緑色の鍵のアイコンが付いています。 SSL Labsサーバーテストを使用してサーバーをテストすると、Aグレードになります。

更新プロセスをテストして終了しましょう。

ステップ5—Certbotの自動更新を確認する

Let’s Encryptの証明書は、90日間のみ有効です。 これは、ユーザーが証明書の更新プロセスを自動化することを奨励するためです。 The certbot インストールしたパッケージは、systemdタイマーを介して「certbotrenew」を1日2回実行することで、これを処理します。 非systemdディストリビューションでは、この機能はに配置されたスクリプトによって提供されます。 /etc/cron.d. このタスクは1日2回実行され、有効期限が切れてから30日以内の証明書を更新します。

更新プロセスをテストするために、ドライランを実行できます。 certbot:

  1. sudo certbot renew --dry-run

エラーが表示されない場合は、すべて設定されています。 必要に応じて、Certbotは証明書を更新し、Nginxをリロードして変更を取得します。 自動更新プロセスが失敗した場合、Let’s Encryptは指定した電子メールにメッセージを送信し、証明書の有効期限が近づいたときに警告します。

結論

このチュートリアルでは、Let’sEncryptクライアントをインストールしました certbot、ドメインのSSL証明書をダウンロードし、これらの証明書を使用するようにNginxを構成し、証明書の自動更新を設定します。 Certbotの使用についてさらに質問がある場合は、それらのドキュメントから始めることをお勧めします。

モバイルバージョンを終了