前書き
このチュートリアルでは、ApacheをWebサーバーとして実行しているUbuntu 16.04サーバーでLet’s EncryptからTLS / SSL証明書を設定する方法を示します。
SSL証明書は、サーバーとクライアント間のトラフィックを暗号化するためにWebサーバー内で使用され、アプリケーションにアクセスするユーザーに追加のセキュリティを提供します。 Let's Encryptを使用すると、信頼できる証明書を無料で簡単に取得してインストールできます。
前提条件
このガイドを完了するには、次のものが必要です。
-
root以外のsudoが有効なユーザーがいるUbuntu16.04サーバー。これは、Initial Server Setupガイドに従ってセットアップできます。
-
ServerName
を指定する仮想ホストを介して適切に構成されたone or more domain namesがインストールされたApacheWebサーバー。
次に進む準備ができたら、sudo対応アカウントを使用してサーバーにログインします。
[[step-1 -—- install-the-let-39-s-encrypt-client]] ==ステップ1— Let’sEncryptクライアントをインストールします
サーバーで実行されているクライアントソフトウェアを介して証明書を取得しましょう。 公式クライアントはCertbotと呼ばれ、その開発者は最新バージョンで独自のUbuntuソフトウェアリポジトリを維持しています。 Certbotは非常に活発に開発されているため、このリポジトリを使用して、デフォルトでUbuntuが提供するよりも新しいバージョンをインストールする価値があります。
まず、リポジトリを追加します。
sudo add-apt-repository ppa:certbot/certbot
受け入れるには、ENTER
を押す必要があります。 その後、パッケージリストを更新して、新しいリポジトリのパッケージ情報を取得します。
sudo apt-get update
そして最後に、apt-get
を使用して新しいリポジトリからCertbotをインストールします。
sudo apt-get install python-certbot-apache
これで、certbot
Let’sEncryptクライアントを使用する準備が整いました。
[[step-2 -—- set-up-the-ssl-certificate]] ==ステップ2—SSL証明書を設定する
Certbotを使用してApacheのSSL証明書を生成するのは非常に簡単です。 クライアントは、パラメーターとして提供されたドメインに対して有効な新しいSSL証明書を自動的に取得してインストールします。
対話型インストールを実行し、単一のドメインのみをカバーする証明書を取得するには、次のようにcertbot
コマンドを実行します。ここで、example.comはドメインです。
sudo certbot --apache -d example.com
複数のドメインまたはサブドメインに有効な単一の証明書をインストールする場合は、追加のパラメーターとしてコマンドに渡すことができます。 パラメータのリストの最初のドメイン名は、Let's Encryptが証明書を作成するために使用するbaseドメインになります。そのため、リストの最初に裸のトップレベルドメイン名を渡し、その後に渡すことをお勧めします。追加のサブドメインまたはエイリアスによって:
sudo certbot --apache -d example.com -d www.example.com
この例では、baseドメインはexample.com
になります。
複数の仮想ホストがある場合は、それぞれに対してcertbot
を1回実行して、それぞれに対して新しい証明書を生成する必要があります。 仮想ホスト全体に複数のドメインとサブドメインを任意の方法で分散できます。
依存関係がインストールされた後、証明書オプションをカスタマイズするためのステップバイステップガイドが表示されます。 紛失したキーの回復と通知用の電子メールアドレスを提供するように求められ、http
とhttps
の両方のアクセスを有効にするか、すべての要求をhttps
にリダイレクトするかを選択できます。 。 暗号化されていないhttp
トラフィックが特に必要な場合を除いて、通常はhttps
を要求するのが最も安全です。
インストールが完了すると、生成された証明書ファイルが/etc/letsencrypt/live
にあるはずです。 SSL証明書のステータスは、次のリンクで確認できます(example.comをbaseドメインに置き換えることを忘れないでください)。
https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
これで、https
プレフィックスを使用してWebサイトにアクセスできるようになります。
[[step-3 -—- verifying-certbot-auto-renewal]] ==ステップ3—Certbotの自動更新を確認する
証明書を90日間だけ暗号化しましょう。 ただし、インストールしたcertbotパッケージは、systemdタイマーを介してcertbot renew
を1日2回実行することで、これを処理します。 systemd以外のディストリビューションでは、この機能は/etc/cron.d
に配置されたcronスクリプトによって提供されます。 タスクは1日に2回実行され、有効期限の30日以内に証明書を更新します。
更新プロセスをテストするには、certbot
を使用してドライランを実行できます。
sudo certbot renew --dry-run
エラーが表示されなければ、設定は完了です。 必要に応じて、Certbotは証明書を更新し、Apacheをリロードして変更を反映します。 自動更新プロセスが失敗した場合、Let’s Encryptは指定したメールにメッセージを送信し、証明書の有効期限が近づいていることを警告します。
結論
このガイドでは、ApacheでホストされているWebサイトを保護するために、Let’s Encryptから無料のSSL証明書をインストールする方法を説明しました。 重要な更新については公式のLet’s Encrypt blogを時々確認し、Certbotクライアントの詳細についてはthe Certbot documentationを読むことをお勧めします。