Ubuntu16.04で複数のApache仮想ホストの証明書を暗号化するように設定する方法
ステータス:非推奨
この記事は非推奨になり、保守されなくなりました。
理由
Certbotでの変更により、この記事の内容は、Ubuntu16.04のメインのApacheおよびLet’sEncryptチュートリアルに置き換えられました。
代わりに参照してください
この記事は参照として役立つ場合がありますが、機能しない場合やベストプラクティスに従わない場合があります。 Ubuntu16.04でLet’sEncryptを使用してApacheを保護する方法を使用することを強くお勧めします。
序章
SSL証明書は、サーバーとクライアント間のトラフィックを暗号化するためにWebサーバー内で使用され、アプリケーションにアクセスするユーザーに追加のセキュリティを提供します。 Let’s Encryptは、信頼できる証明書を無料で取得してインストールする簡単な方法を提供します。 このチュートリアルでは、Apache上の複数の仮想ホストを保護するために Let’sEncryptからTLS/SSL証明書を設定する方法を示します。
前提条件
このガイドを完了するには、次のものが必要です。
- ルート以外のsudoユーザーとファイアウォールを備えた1つの16.04サーバー。これは、初期のUbuntu16.04サーバーセットアップチュートリアルガイドに従ってセットアップできます。
- Apache Webサーバーは、複数の仮想ホストをインストールしてホストします。各仮想ホストには独自の構成ファイルがあり、このApache仮想ホストチュートリアルに従って設定できます。
このガイドでは、ドメインexample.com
およびtest.com
のLet’sEncrypt証明書をインストールします。 これらはガイド全体で参照されますが、フォローしながら独自のドメインに置き換える必要があります。
ステップ1—Let’sEncryptクライアントのインストール
Let’s Encrypt証明書は、サーバーで実行されているクライアントソフトウェアを介して取得されます。 公式クライアントは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クライアントを使用する準備が整いました。 次に、証明書を作成します。
ステップ2—証明書の設定
ApacheのSSL証明書の生成は簡単です。 Certbotは、パラメーターとして提供されたドメインに有効な新しいSSL証明書を自動的に取得してインストールします。
注:ドメイン名が異なる場合でも、複数のLet’sEncrypt証明書をバンドルすることができます。 ただし、一意のドメイン名に対して個別の証明書を作成することをお勧めします。
そのため、この手順を複数回(仮想ホストごとに1回)実行する必要があります。 一般的な経験則として、特定のドメインのサブドメインのみをバンドルする必要があります。
次のコマンドは、-d
フラグの後のパラメーターとしてドメイン名のコンマ区切りリストを取ります。 リストされている最初のドメイン名は、Certbotが証明書を作成するために使用するベースドメインです。 このため、最初に裸のトップレベルドメイン名を渡し、次に追加のサブドメインまたはエイリアスを渡すことをお勧めします。
example.com
の対話型インストールを開始して、そのドメインのバンドルされた証明書を作成します。
- sudo certbot --apache -d example.com
紛失したキーの回復と通知用のメールアドレスを入力するよう求められます。また、すべてのhttp
トラフィックをhttps
にリダイレクトするかどうかを選択して、https
を強制する方が安全なので、両方を許可する特別な必要がない限り、これを選択する必要があります。
インストールが完了すると、/etc/letsencrypt/live
で生成された証明書ファイルを見つけることができます。 https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
でSSL証明書のステータスを確認でき、https
プレフィックスを使用してWebサイトにアクセスできるようになりました。 使用しているすべてのドメインについて、この手順をもう一度実行することを忘れないでください。
ステップ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で複数の仮想ホストを保護するために、Let’sEncryptから無料のSSL証明書をインストールする方法を説明しました。 公式のLet’sEncryptブログで重要な更新を随時確認し、CertbotのドキュメントでCertbotクライアントの詳細を確認することをお勧めします。