Debian 11でLet’s Encryptを用いてApacheを安全に保護する方法は次の通りです。

こんにちは、はじめまして。

「Let’s Encrypt」は、無料でTLS/SSL証明書を入手し、ウェブサーバーで暗号化されたHTTPSを可能にする手段を提供する証明機関(CA)です。証明書の取得とインストールのプロセスを支援するため、Certbotというソフトウェアクライアントを提供し、必要なステップのほとんど(もしくはすべて)を自動化する試みをしています。現在、ApacheとNginxの両方で証明書の取得とインストールのプロセス全体が完全に自動化されています。

このチュートリアルでは、Certbotを使用してDebian 11のApacheに無料のSSL証明書を取得し、証明書を自動的に更新する方法を学びます。

このチュートリアルでは、デフォルトの設定ファイルの代わりに別々のApache仮想ホストファイルを使用します。各ドメインごとに新しいApache仮想ホストファイルを作成することをおすすめします。これにより、一般的な間違いを回避することができ、デフォルトのファイルを再設定として保持することができます。

前提条件

このチュートリアルに従うためには、以下が必要です。

  • One Debian 11 server set up by following this initial server setup for Debian 11 tutorial, including a non-root user with sudo privileges and a firewall.
  • A fully registered domain name. This tutorial will use your_domain as an example throughout. You can purchase a domain name on Namecheap, get one for free on Freenom, or use the domain registrar of your choice.
  • Both of the following DNS records set up for your server. To set these up, you can follow these instructions for adding domains and then these instructions for creating DNS records.An A record with your_domain pointing to your server’s public IP address.
    An A record with www.your_domain pointing to your server’s public IP address.
  • Apache installed by following How To Install Apache on Debian 11. Be sure that you have a virtual host file set up for your domain. This tutorial will use /etc/apache2/sites-available/your_domain.conf as an example.

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

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

Note

注意:このチュートリアルでは、Linuxシステムのために開発されたパッケージマネージャーであるsnappyを使用して、Debian上にソフトウェアをインストールするというCertbotドキュメンテーションの推奨に従っています。aptを使用してデフォルトのDebianリポジトリからCertbotをインストールすることもできますが、この方法ではCertbotのスナップ(この執筆時点での最新バージョンであるバージョン1.29.0)よりも古いバージョン(バージョン1.12.0)がインストールされます。

DebianにCertbotをスナップとしてインストールするには、まずサーバーにsnapdがインストールされている必要があります。snapdは、スナップをインストール、使用、管理するために必要なデーモンです。snapdパッケージをインストールすると、サーバーにもsnapコマンドがインストールされます。

最新ではない場合、snapdをインストールするために、ローカルのパッケージインデックスを更新してください。

  1. sudo apt update

 

その後、snapdパッケージをインストールしてください。

  1. sudo apt install snapd

 

このコマンドを実行すると、snapdおよびその依存関係をインストールするかどうかの確認のプロンプトが表示されます。Yを押してENTERキーを押すことで同意できます。

次に、snapコマンドを使用して、core snapをインストールします。これにより、Certbot snapを含むすべてのsnapのインストールに必要ないくつかの依存関係がサーバーにインストールされます。

  1. sudo snap install core

 

次に、コアスナップをリフレッシュしてください。これにより、snapdおよび関連する依存関係の最新バージョンがインストールされます。

  1. sudo snap refresh core

 

次のように日本語で言い換えられます(一つのオプションだけ):
Snapは3つの制約レベルのいずれかの下でインストールすることができます。これにより、システムからの隔離度が異なる選択肢が提供されます。たとえば、ほとんどのSnapはデフォルトで「–strict confinement」レベルの下にインストールされます。これにより、これらのプログラムはシステムのファイルやネットワークにアクセスできなくなります。ただし、Certbotは証明書を正しくセットアップするために特定の設定ファイルを編集する必要があるため、このコマンドには「–classic オプション」が含まれています。この制約レベルを使用すると、これによりインストールされた何らかのSnapが従来のパッケージと同じシステムリソースにアクセスできるようになります。

この考えを念頭に置いて、以下のコマンドでcertbotスナップをインストールすることができます。

  1. sudo snap install –classic certbot

 

このインストールプロセスでは、certbot実行ファイルを/snap/bin/ディレクトリにインストールします。/usr/bin/ディレクトリにこのファイルへのシンボリックリンクを作成して、システムのどこでもcertbotコマンドを実行できるようにします。

  1. sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

Certbotは現在使用できる状態ですが、ApacheのSSL設定を構成するには、Apacheが正しく設定されていることを確認する必要があります。

ステップ2-SSL証明書の設定を行います。

Certbotは、自動的にSSLを設定するために、Apacheの設定で正しい仮想ホストを見つけることができる必要があります。具体的には、リクエストしたドメインに一致するServerNameディレクティブを検索して行います。

もしもあなたがApacheのインストールチュートリアルで仮想ホストの設定手順に従った場合、/etc/apache2/sites-available/your_domain.confにドメインのためのVirtualHostブロックがあり、ServerNameディレクティブも適切に設定されているはずです。

確認するために、nanoやお気に入りのテキストエディタを使用して、ドメインの仮想ホストファイルを開いてください。

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

 

既存のServerName行を見つけてください。以下のようになるはずですが、”your_domain”の部分をご自身のドメイン名に置き換えてください。

あなたのドメインの「/etc/apache2/sites-available/your_domain.conf」
...
ServerName your_domain;
...

もしそうでなければ、ServerNameディレクティブをドメイン名に向けるように更新してください。そしてファイルを保存し、エディタを終了してください。もしnanoを使用した場合は、CTRL + X、Y、ENTERを押してください。

次に、設定編集の文法を確認してください。

  1. sudo apache2ctl configtest

 

もし構文エラーがなければ、出力は以下の通りになります。

Output

. . . Syntax OK

エラーが発生した場合は、仮想ホストファイルを再オープンし、タイプミスや欠落文字をチェックしてください。設定ファイルの構文が正しい場合は、Apacheを再読み込みして新しい設定をロードしてください。

  1. sudo systemctl reload apache2

 

Certbotは正しいVirtualHostブロックを見つけて更新することができます。

それでは、次にファイアウォールを更新してHTTPSトラフィックを許可しましょう。

Step 3 — ファイアウォールを介してHTTPSを許可する

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

「実行することで、現在の設定を確認できます。」(Jikkō suru koto de, genzai no settei wo kakunin dekimasu.)

  1. sudo ufw status

 

Debian 11にApacheをインストールする方法に従った場合、次のコマンドの出力結果は以下のようになります。これにより、WebサーバーへのアクセスがHTTPトラフィックのみ許可されます。

Output

Status: active To Action From — —— —- OpenSSH ALLOW Anywhere WWW ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)

HTTPSトラフィックを許可するために、「WWWフル」プロファイルを許可し、余分な「WWW」プロフィール許可を削除してください。

  1. sudo ufw allow ‘WWW Full’
  2. sudo ufw delete allow ‘WWW’

 

あなたの現在のステータスは以下の通りです。

  1. sudo ufw status

 

Output

Status: active To Action From — —— —- OpenSSH ALLOW Anywhere WWW Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW Full (v6) ALLOW Anywhere (v6)

次に、Certbotを実行して証明書を取得しましょう。 (Tsugi ni, Certbot o jikkō shite shōmei-sho o shutoku shimashou.)

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

Certbotは、プラグインを介してさまざまな方法でSSL証明書を取得することができます。Apacheプラグインは、必要に応じてApacheの再構成と構成の再読み込みを手配してくれます。このプラグインを使用するには、以下を実行してください。

  1. sudo certbot –apache -d your_domain -d www.your_domain

 

これは、–apacheプラグインを使用してcertbotを実行し、-dオプションを使用して証明書の有効な名前を指定します。

もしCertbotを初めて実行する場合、メールアドレスの入力と利用規約への同意が求められます。さらに、デジタル権利を促進する非営利団体であり、Certbotの製作者であるElectronic Frontier Foundation(EFF)とメールアドレスを共有する意思があるかどうかも尋ねられます。メールアドレスを共有する場合はYを入力し、共有しない場合はNを入力してください。

そうした後、CertbotはLet’s Encryptサーバーと通信し、ドメインの所有権を確認するためにチャレンジを実行します。

もし成功すれば、その構成は自動的に更新され、Apacheは新しい設定を読み込むために再起動します。certbotは処理が成功したことと、証明書が保存されている場所を伝えるメッセージとともに完了します。

Output

Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem This certificate expires on 2022-10-31. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf Successfully deployed certificate for www.your_domain to /etc/apache2/sites-available/your_domain-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – 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評価を受けます。

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

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

Let’s Encryptの証明書は90日間だけ有効です。これは、ユーザーが証明書の更新プロセスを自動化することを促すためです。インストールしたcertbotパッケージは、/etc/cron.dにリニューアルスクリプトを追加することによってこれを管理します。このスクリプトは1日2回実行され、有効期限まで30日未満の証明書は自動的に更新されます。

更新プロセスをテストするために、certbotを使用してドライランを行うことができます。

  1. sudo certbot renew –dry-run

 

エラーがなければ、準備完了です。必要に応じて、Certbotは証明書を自動で更新し、Apacheを再読み込みして変更を反映します。もし自動更新のプロセスに問題が発生した場合、Let’s Encryptは指定したメールアドレス宛に証明書の期限切れ前に警告を送信します。

結論

このチュートリアルでは、Let’s Encryptのクライアントcertbotをインストールし、ドメインのためにSSL証明書をダウンロードし、Apacheを設定してこれらの証明書を使用し、自動的な証明書更新を設定しました。Certbotの使用に関するさらなる質問がある場合は、ドキュメントが役立つでしょう。

コメントを残す 0

Your email address will not be published. Required fields are marked *