前書き
SSL証明書は、サーバーとクライアント間のトラフィックを暗号化するためにWebサーバー内で使用され、アプリケーションにアクセスするユーザーに追加のセキュリティを提供します。 Let’s Encryptを使用すると、信頼できる証明書を無料で簡単に取得してインストールできます。
このチュートリアルでは、Ubuntu 14.04サーバー内でApache上の複数の仮想ホストを保護するためにhttps://letsencrypt.org/[Let’s Encrypt]からTLS / SSL証明書を設定する方法を示します。
また、cronジョブを使用して証明書の更新プロセスを自動化する方法についても説明します。
前提条件
このガイドを完了するには、次のものが必要です。
-
非ルートsudoユーザーを持つUbuntu 14.04サーバー。https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 [初期サーバーセットアップ]ガイド
-
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-14-04-lts [複数の仮想ホスト]をホストする機能的なApache Webサーバーのインストール
各仮想ホストは、独自の個別の構成ファイルでセットアップされ、ブラウザーを介して外部からアクセスできることが重要です。 UbuntuでApache仮想ホストを適切に設定する方法の詳細なガイドについては、https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16に従ってください-04 [このリンク]。
このガイドでは、ドメイン「+ example.com 」と「 test.com +」の証明書を暗号化してインストールします。 これらはガイド全体で参照されますが、それに沿って独自のドメインに置き換える必要があります。
次に進む準備ができたら、sudoアカウントを使用してサーバーにログインします。
[[step-1---download-the-let’s-encrypt-client]] === ステップ1-Let’s Encryptクライアントのダウンロード
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-apache
これで、 + certbot +
Let’s Encryptクライアントを使用する準備が整いました。
ステップ2-証明書のセットアップ
+ certbot +
Let’s Encryptクライアントを使用してApacheのSSL証明書を生成するのは非常に簡単です。 クライアントは、パラメーターとして提供されたドメインに対して有効な新しいSSL証明書を自動的に取得してインストールします。
複数のLet’s Encrypt証明書をまとめてバンドルすることは可能ですが、ドメイン名が異なる場合でも、一意のドメイン名に対して個別の証明書を作成することをお勧めします。 一般的な経験則として、特定のドメインのサブドメインのみをバンドルする必要があります。
最初のSSL証明書の生成
最初の仮想ホスト `+ example.com +`のSSL証明書を設定することから始めます。
対話型インストールを実行し、ドメインとサブドメイン、つまりベースドメインとしての「+ example.com 」とサブドメインとしての「 www.example.com +」に対して有効なバンドル証明書を取得します。 Apacheセットアップで仮想ホストまたはエイリアスとして現在構成されている追加のサブドメインを含めることができます。
次のコマンドで `+ certbot +`コマンドを実行します:
sudo certbot --apache -d -d
パラメータのリストの最初のドメイン名は、Let’s Encryptが証明書を作成するために使用する* base *ドメインであることに注意してください。追加のサブドメインまたはエイリアスによって。
この例では、* base *ドメインは `+ example.com +`になります。
依存関係がインストールされた後、証明書オプションをカスタマイズするためのステップバイステップガイドが表示されます。 失われたキーの回復と通知用の電子メールアドレスを提供するように求められます。また、「+ http 」と「 https 」の両方のアクセスを有効にするか、すべてのリクエストを「 https +」にリダイレクトするかを選択できます。
インストールが完了すると、生成された証明書ファイルが `+ / etc / letsencrypt / live +`で見つかるはずです。 次のリンクでSSL証明書のステータスを確認できます(* base *ドメインに置き換えることを忘れないでください):
https://www.ssllabs.com/ssltest/analyze.html?d=&latest
これで、 `+ https +`プレフィックスを使用してWebサイトにアクセスできるようになります。
2番目のSSL証明書の生成
追加の仮想ホストの証明書を生成するには、前の手順で説明したのと同じプロセスに従う必要があります。
Let’s Encryptで保護する2番目の仮想ホストで、証明書インストールコマンドを繰り返します。
sudo certbot --apache -d -d
この例では、* base *ドメインは `+ test.com +`になります。
繰り返しますが、次のリンクを使用してSSL証明書のステータスを確認できます(* base *ドメインに置き換えることを忘れないでください)。
https://www.ssllabs.com/ssltest/analyze.html?d=&latest
追加の仮想ホストの証明書を生成する場合は、プロセスを繰り返すだけで、ベアトップレベルドメインを* base *ドメインとして使用することを忘れないでください。
ステップ3-自動更新を設定する
Let’s Encryptの証明書は90日間のみ有効です。 これは、ユーザーが証明書の更新プロセスを自動化することを奨励するためです。 有効期限が切れる証明書を確認して自動的に更新するために、定期的に実行するコマンドを設定する必要があります。
更新チェックを毎日実行するには、定期的なジョブを実行するための標準システムサービスである `+ cron `を使用します。 ` crontab `と呼ばれるファイルを開いて編集することにより、 ` cron +`に何をすべきかを伝えます。
sudo crontab -e
テキストエディタは、いくつかのヘルプテキストを含むテキストファイルであるデフォルトのcrontabを開きます。 ファイルの最後に次の行を貼り付け、保存して閉じます。
crontab
. . .
15 3 * * * /usr/bin/certbot renew --quiet
この行の「+15 3 * * * +」の部分は、「毎日午前3時15分に次のコマンドを実行する」ことを意味します。 いつでも選択できます。
Certbotの `+ renew `コマンドは、システムにインストールされているすべての証明書を確認し、30日以内に期限切れになるように設定されている証明書を更新します。 `-quiet +`は、Certbotに情報を出力せず、ユーザー入力を待機しないように指示します。
`+ cron `はこのコマンドを毎日実行します。 `-apache +`プラグインを使用して証明書をインストールしたため、Apacheもリロードされ、新しい証明書が使用されていることを確認します。
結論
このガイドでは、Apacheの複数の仮想ホストを保護するために、Let’s Encryptから無料のSSL証明書をインストールする方法を説明しました。 公式のhttps://letsencrypt.org/blog/[Let’s Encrypt blog]で重要なアップデートを随時確認することをお勧めします。