序章

Let’s Encryptは認証局(CA)であり、無料の TLS / SSL証明書を簡単に取得してインストールできるため、Webサーバーで暗号化されたHTTPSを有効にできます。 必要な手順のほとんど(すべてではないにしても)を自動化しようとするソフトウェアクライアントCertbotを提供することにより、プロセスを簡素化します。 現在、証明書の取得とインストールのプロセス全体は、ApacheとNginxの両方で完全に自動化されています。

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

このチュートリアルでは、デフォルトの構成ファイルの代わりに、別のApache仮想ホストファイルを使用します。 ドメインごとに新しいApache仮想ホストファイルを作成することをお勧めします。これは、よくある間違いを回避し、フォールバック構成としてデフォルトファイルを維持するのに役立ちます。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • このDebian9チュートリアルの初期サーバーセットアップに従ってセットアップされた1台のDebian9サーバー( root 以外のユーザーを含む) sudo 特権とファイアウォール。

  • 完全に登録されたドメイン名。 このチュートリアルでは、全体を通してexample.comを使用します。 Namecheap でドメイン名を購入するか、 Freenom で無料でドメイン名を取得するか、選択したドメイン登録事業者を使用できます。

  • 次の両方のDNSレコードがサーバー用に設定されています。 それらを追加する方法の詳細については、このDigitalOceanDNSの紹介に従ってください。

    • とのAレコード example.com サーバーのパブリックIPアドレスを指します。
    • とのAレコード www.example.com サーバーのパブリックIPアドレスを指します。
  • Apacheは、 Debian9にApacheをインストールする方法に従ってインストールされます。 ドメインに仮想ホストファイルがあることを確認してください。 このチュートリアルでは、 /etc/apache2/sites-available/example.com.conf 例として。

ステップ1—Certbotをインストールする

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

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

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

  1. sudo nano /etc/apt/sources.list

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

/etc/apt/sources.list.d/sources.list
. . .
deb http://ftp.debian.org/debian stretch-backports main

これには、 main Debian Free SoftwareGuidelines(DFSG)に準拠したパッケージ、および non-freecontrib コンポーネント。DFSGに準拠していないか、このカテゴリに依存関係が含まれています。

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

  1. sudo apt update

次に、次のコマンドを使用してCertbotをインストールします。 に注意してください -t オプションは教えます apt 追加したバックポートリポジトリを調べてパッケージを検索するには、次のようにします。

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

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

ステップ2—SSL証明書を設定する

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

Apacheインストールチュートリアル仮想ホストのセットアップ手順に従った場合は、 VirtualHost ドメインのブロック /etc/apache2/sites-available/example.com.conf とともに ServerName ディレクティブはすでに適切に設定されています。

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

  1. sudo nano /etc/apache2/sites-available/example.com.conf

既存のものを探す ServerName ライン。 代わりに独自のドメイン名を使用して、次のようになります。 example.com:

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

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

  1. sudo apache2ctl configtest

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

Output
Syntax OK

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

  1. sudo systemctl reload apache2

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

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

ステップ3—ファイアウォールを介したHTTPSの許可

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

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

  1. sudo ufw status

Debian 9 にApacheをインストールする方法に関するガイドのステップ2に従った場合、このコマンドの出力は次のようになり、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 Full」プロファイルを許可し、冗長な「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を実行して、証明書を取得しましょう。

ステップ4—SSL証明書を取得する

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

  1. sudo certbot --apache -d example.com -d www.example.com

これは実行されます certbot とともに --apache プラグイン、使用 -d 証明書を有効にする名前を指定します。

初めてのランニングの場合 certbot、メールアドレスを入力して利用規約に同意するよう求められます。 そうした後、 certbot Let’s Encryptサーバーと通信し、チャレンジを実行して、証明書を要求しているドメインを制御していることを確認します。

それが成功した場合、 certbot HTTPS設定をどのように構成するかを尋ねられます。

Output
Please 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 プロセスが成功し、証明書が保存されている場所を通知するメッセージで締めくくられます。

Output
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/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

証明書がダウンロード、インストール、およびロードされます。 を使用してWebサイトをリロードしてみてください https:// ブラウザのセキュリティインジケータに注目してください。 サイトが適切に保護されていることを示す必要があります。通常は緑色の鍵のアイコンが付いています。 SSL Labsサーバーテストを使用してサーバーをテストすると、Aグレードになります。

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

ステップ5—Certbotの自動更新を確認する

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

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

  1. sudo certbot renew --dry-run

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

結論

このチュートリアルでは、Let’sEncryptクライアントをインストールしました certbot、ドメインのSSL証明書をダウンロードし、これらの証明書を使用するようにApacheを構成し、証明書の自動更新を設定します。 Certbotの使用についてさらに質問がある場合は、それらのドキュメントから始めることをお勧めします。