Debian 9でLet’s Encryptを使用してApacheを保護する方法

前書き

Let’s Encryptは、無料のhttps://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-andを取得してインストールする簡単な方法を提供する認証局(CA)です。 -csrs [TLS / SSL証明書]。これにより、Webサーバーで暗号化されたHTTPSが有効になります。 必要な手順のほとんど(すべてではないにしても)の自動化を試みるソフトウェアクライアントCertbotを提供することにより、プロセスを簡素化します。 現在、証明書の取得とインストールのプロセス全体は、ApacheとNginxの両方で完全に自動化されています。

このチュートリアルでは、Certbotを使用してDebian 9上のApache用の無料のSSL証明書を取得し、証明書が自動的に更新されるように設定します。

このチュートリアルでは、デフォルトの構成ファイルの代わりに、別個のApache仮想ホストファイルを使用します。 https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-debian-9#step-5-%E2%80%94-setting-up-virtual -hosts-(推奨)[推奨]各ドメインに新しいApache仮想ホストファイルを作成すると、よくある間違いを回避し、デフォルトのファイルをフォールバック構成として維持できるためです。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • このhttps://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-9[Debian 9の初期サーバーセットアップ]チュートリアル(非* rootを含む)に従ってセットアップされた1つのDebian 9サーバー* `+ sudo +`権限とファイアウォールを持つユーザー。

  • 完全に登録されたドメイン名。 このチュートリアルでは、全体を通して* example.com *を使用します。 https://namecheap.com [Namecheap]でドメイン名を購入するか、http://www.freenom.com/en/index.html [Freenom]で無料で入手するか、選択したドメインレジストラを使用できます。 。

  • 次の両方のDNSレコードがサーバーに設定されています。 追加方法の詳細については、https://www.digitalocean.com/community/tutorials/an-introduction-to-digitalocean-dns [DigitalOcean DNSの概要]を参照してください。

  • サーバーのパブリックIPアドレスを指す「++」を持つAレコード。

  • サーバーのパブリックIPアドレスを指す「+ www。+」を持つAレコード。

  • Debian 9にApacheをインストールする方法に従ってApacheをインストールします。 ドメインの仮想ホストファイル。 このチュートリアルでは、例として「+ / etc / apache2 / sites-available / .conf +」を使用します。

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

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

この記事の執筆時点では、CertbotはデフォルトではDebianソフトウェアリポジトリから入手できません。 `+ apt `を使用してソフトウェアをダウンロードするには、 ` apt `がパッケージソースを検索する ` sources.list +`ファイルにバックポートリポジトリを追加する必要があります。 バックポートは、安定したDebianディストリビューションで新しいライブラリなしで実行されるように再コンパイルされるDebianのテストおよび不安定なディストリビューションからのパッケージです。

バックポートリポジトリを追加するには、 `+ / etc / apt / `ディレクトリで ` sources.list`ファイルを開く(または作成する):

sudo nano /etc/apt/sources.list

ファイルの最後に、次の行を追加します。

/etc/apt/sources.list.d/sources.list

. . .
deb http://ftp.debian.org/debian stretch-backports main

これには、https://www.debian.org/social_contract#guidelines [Debian Free Software Guidelines(DFSG)]準拠の `+ main `パッケージと、 ` non-free `および ` contrib +が含まれます。 `コンポーネント。DFSGに準拠していないか、このカテゴリに依存関係が含まれています。

+ CTRL + X ++ Y +、次に `+ ENTER +`を押してファイルを保存して閉じ、パッケージリストを更新します。

sudo apt update

次に、次のコマンドを使用してCertbotをインストールします。 `+ -t `オプションは、追加したばかりのbackportsリポジトリを見てパッケージを検索するように ` apt +`に指示することに注意してください:

sudo apt install python-certbot-apache -t stretch-backports

Certbotを使用する準備ができましたが、Apache用にSSLを構成するには、Apacheが正しく構成されていることを確認する必要があります。

ステップ2-SSL証明書のセットアップ

SSLを自動的に構成するには、CertbotがApache構成で正しい仮想ホストを見つけることができる必要があります。 具体的には、証明書を要求するドメインに一致する `+ ServerName +`ディレクティブを探すことでこれを行います。

Apacheインストールチュートリアルの仮想ホストのセットアップ手順、ドメインの `+ / etc / apache2 / sites-available / .conf `に ` VirtualHost `ブロックが必要です。 ` ServerName +`ディレクティブは既に適切に設定されています。

確認するには、 `+ nano +`またはお気に入りのテキストエディターを使用してドメインの仮想ホストファイルを開きます。

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

既存の `+ ServerName `行を見つけます。 `+`の代わりに独自のドメイン名で、次のようになります。

/etc/apache2/sites-available/example.com.conf

...
ServerName ;
...

まだの場合は、ドメイン名を指すように `+ ServerName +`ディレクティブを更新します。 次に、ファイルを保存し、エディターを終了して、構成編集の構文を確認します。

sudo apache2ctl configtest

構文エラーがない場合、次の出力が表示されます。

OutputSyntax OK

エラーが発生した場合は、仮想ホストファイルを再度開き、入力ミスや文字の欠落を確認してください。 構成ファイルの構文が正しい場合、Apacheをリロードして新しい構成をロードします。

sudo systemctl reload apache2

Certbotは正しいVirtualHostブロックを見つけて更新できるようになりました。

次に、ファイアウォールを更新してHTTPSトラフィックを許可します。

手順3-ファイアウォールを介したHTTPSの許可

前提条件のガイドで推奨されているように、「+ ufw 」ファイアウォールを有効にしている場合、HTTPSトラフィックを許可するように設定を調整する必要があります。 幸いなことに、Debianにインストールすると、 ` ufw +`にはHTTPおよびHTTPSトラフィックのファイアウォールルールを変更するプロセスを簡素化するのに役立ついくつかのプロファイルがパッケージされています。

次のように入力すると、現在の設定を確認できます。

sudo ufw status

https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-debian-9#step-2-%E2のガイドのステップ2を実行した場合%80%94-adjusting-the-firewall [Debian 9にApacheをインストールする方法]、このコマンドの出力は次のようになり、WebサーバーへのHTTPトラフィックのみが許可されることを示します。

OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW (v6)                   ALLOW       Anywhere (v6)

さらにHTTPSトラフィックを許可するには、「WWW Full」プロファイルを許可し、冗長な「WWW」プロファイル許可を削除します。

sudo ufw allow 'WWW Full'
sudo ufw delete allow 'WWW'

ステータスは次のようになります。

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
WWW Full                   ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
WWW Full (v6)              ALLOW       Anywhere (v6)

次に、Certbotを実行して証明書を取得します。

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

Certbotは、プラグインを介してSSL証明書を取得するさまざまな方法を提供します。 Apacheプラグインは、必要に応じてApacheの再構成と構成の再読み込みを処理します。 このプラグインを使用するには、次を入力します。

sudo certbot --apache -d  -d

これは、「-apache +」プラグインで「 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」を押します。 設定が更新され、Apacheがリロードして新しい設定を取得します。 `+ certbot +`は、プロセスが成功したこと、および証明書が保存されている場所を通知するメッセージで終了します。

OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live//fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live//privkey.pem
  Your cert will expire on 2018-12-04. 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 *グレードになります。

最後に、更新プロセスをテストします。

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

Let’s Encryptの証明書は90日間のみ有効です。 これは、ユーザーが証明書の更新プロセスを自動化することを奨励するためです。 インストールした `+ certbot `パッケージは、更新スクリプトを ` / etc / cron.d +`に追加することでこれを処理します。 このスクリプトは1日に2回実行され、有効期限の30日以内にある証明書を自動的に更新します。

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

sudo certbot renew --dry-run

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

結論

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

Related