前書き

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

このチュートリアルでは、Certbotを使用して無料のSSL証明書を取得し、Ubuntu 14.04 LTSのNginxで使用する方法を示します。 また、SSL証明書を自動的に更新する方法も示します。

このチュートリアルでは、個別のサーバーブロックファイルの代わりに、デフォルトのNginx構成ファイルを使用します。 https://www.digitalocean.com/community/tutorials/technical-recommendations-and-best-practices-for-digitalocean-s-tutorials#web-servers [推奨]ドメインごとに新しいNginxサーバーブロックファイルを作成するよくある間違いを避けるのに役立ち、デフォルトファイルを意図したフォールバック構成として維持します。 代わりにサーバーブロックを使用してSSLをセットアップする場合は、https://www.digitalocean.com/community/tutorials/how-to-set-up-let-s-encrypt-with-nginx-server-blocksに従うことができます-on-ubuntu-16-04 [このNginxサーバーはLet’s Encryptチュートリアルでブロックします]。

前提条件

このチュートリアルを実行する前に、いくつかのものが必要です。

  • `+ sudo +`特権を持っている非rootユーザーを持つUbuntu 14.04サーバー。 Ubuntu 14.04の初期サーバーセットアップチュートリアルに従って、このようなユーザーアカウントをセットアップする方法を学ぶことができます。 。

  • Nginxのインストール、https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-14-04-lts [Ubuntu 14.04 LTSにNginxをインストールする方法]

  • 証明書を使用する登録ドメイン名を所有または制御する必要があります。 登録済みのドメイン名をまだお持ちでない場合は、多数のドメイン名レジストラーのいずれかに登録できます(例: Namecheap、GoDaddyなど)。

  • ドメインがサーバーのパブリックIPアドレスを指すDNS レコード。 追加方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean [このホスト名チュートリアル]を参照してください。 これは、Let’s Encryptが証明書を発行するドメインを所有していることを検証する方法のために必要です。 たとえば、「+ example.com 」の証明書を取得する場合、検証プロセスが機能するためには、そのドメインがサーバーに解決される必要があります。 このセットアップでは、ドメイン名として「 example.com 」と「 www.example.com +」を使用するため、両方のDNSレコードが必要です

すべての前提条件が揃ったら、Certbotのインストールに進みましょう。Certbotの暗号化クライアントソフトウェアです。

ステップ1-Certbotのインストール

Let’s Encryptを使用してSSL証明書を取得する最初のステップは、サーバーに「+ certbot +」ソフトウェアをインストールすることです。 Certbotの開発者は、最新バージョンのソフトウェアを使用して独自のUbuntuソフトウェアリポジトリを維持しています。 Certbotは非常に活発に開発されているため、このリポジトリを使用してUbuntuが提供するよりも新しいCertbotをインストールする価値があります。

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

sudo add-apt-repository ppa:certbot/certbot

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

sudo apt-get update

最後に、 `+ apt-get`でCertbotをインストールします。

sudo apt-get install python-certbot-nginx

これで、 + certbot + Let’s Encryptクライアントを使用する準備が整いました。

ステップ2-Nginxのセットアップ

CertbotはNginx用にSSLを自動的に設定できますが、設定で正しい「+ server 」ブロックを見つけることができる必要があります。 これは、証明書をリクエストしているドメインに一致する ` server_name +`ディレクティブを探すことでこれを行います。 Nginxの新規インストールを開始する場合は、デフォルトの構成ファイルを更新できます。

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

既存の `+ server_name +`行を見つけます:

/ etc / nginx / sites-available / default

server_name localhost;

`+ localhost +`をドメイン名に置き換えます:

/ etc / nginx / sites-available / default

server_name  ;

ファイルを保存して、エディターを終了します。 以下を使用して、構成編集の構文を確認します。

sudo nginx -t

エラーなしで実行される場合、Nginxをリロードして新しい構成をロードします。

sudo service nginx reload

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

ステップ3-SSL証明書の取得

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

sudo certbot --nginx -d  -d

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

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

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

OutputPlease 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 +`は、プロセスが成功したこと、および証明書が保存されている場所を通知するメッセージで終了します。

OutputIMPORTANT 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

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

ステップ4-Certbotの自動更新の検証

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

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

sudo certbot renew --dry-run

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

結論

このチュートリアルでは、Let’s Encryptクライアント「+ certbot +」をインストールし、ドメインのSSL証明書をダウンロードし、これらの証明書を使用するようにNginxを設定し、自動証明書更新を設定しました。 Certbotの使用についてさらに質問がある場合は、https://certbot.eff.org/docs/ [それらのドキュメント]から始めるのが良いでしょう。