序章

Apacheは AH02572: Failed to configure at least one certificate and key を使用するように構成されている場合のエラーメッセージ ssl モジュールですが、TLS/SSL公開証明書と対応する秘密鍵がありません。 このエラーにより、Apacheは起動できなくなり、エラーメッセージ自体がApacheのログに記録されます。

このチュートリアルでは、このシリーズの冒頭にある一般的なApacheエラーのトラブルシューティング方法チュートリアルで説明されている方法を使用して、AH02572エラーのトラブルシューティングを行う方法を学習します。 また、設定する方法を学びます SSLCertificateFileSSLCertificateKeyFile メッセージを解決するためのディレクティブ。

ApacheサーバーがAH02572エラーの影響を受けていると既に判断していて、トラブルシューティングの手順をスキップしたい場合は、このチュートリアルの最後にあるApacheへのSSL証明書の追加セクションで解決方法を説明します。エラー。

を使用したトラブルシューティング systemctl

トラブルシューティングをしているとき AH02572: Failed to configure at least one certificate and key エラーメッセージ、Apacheは実行されません。 これは systemctl ステータスは failed メッセージ。

Apacheのステータスを調べるには systemctl、UbuntuおよびDebianから派生したLinuxディストリビューションで次のコマンドを実行します。

UbuntuとDebianシステム
  1. sudo systemctl status apache2.service -l --no-pager

CentOSおよびFedoraシステムでは、次のコマンドを使用してApacheのステータスを調べます。

CentOSとFedoraシステム
  1. sudo systemctl status httpd.service -l --no-pager

The -l フラグは systemctl 楕円で置き換えるのではなく、行の内容全体を出力します()長い行の場合。 The --no-pager フラグは、次のようなツールを呼び出さずにログ全体を画面に出力します less 一度に表示されるのはコンテンツの画面のみです。

次のような出力を受け取るはずです。

Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: failed (Result: exit-code) since Fri 2020-07-31 16:02:41 UTC; 20s ago Process: 36 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE) Jul 31 16:02:41 7d6ef84b6907 systemd[1]: Starting The Apache HTTP Server... Jul 31 16:02:41 7d6ef84b6907 apachectl[36]: Action 'start' failed. Jul 31 16:02:41 7d6ef84b6907 apachectl[36]: The Apache error log may have more information. Jul 31 16:02:41 7d6ef84b6907 systemd[1]: apache2.service: Control process exited, code=exited status=1 Jul 31 16:02:41 7d6ef84b6907 systemd[1]: apache2.service: Failed with result 'exit-code'. Jul 31 16:02:41 7d6ef84b6907 systemd[1]: Failed to start The Apache HTTP Server.

注意すべき重要な行は、Apacheが起動に失敗したことを示す行です。 ただし、AH02572エラーメッセージを示す出力には何もありません。 調べる systemd を使用したApacheのログ journalctl コマンド、またはApacheの設定ファイルをチェックする apachectl configtest エラーのトラブルシューティングに使用できる情報を見つけるのに役立ちません。

AH02572エラーを診断して解決するために、次のセクションでは、Apacheのログを直接調べる方法について説明します。

Apacheのログを調べる

Apacheは、内部操作に関する診断情報をさまざまな場所に記録します。これらの場所は、Linuxディストリビューションによって異なります。 通常、Apacheは、デバッグ、監視、およびアラートを支援するために、アクセス要求とは別のログファイルにエラーメッセージを記録するように構成されています。

UbuntuおよびDebianから派生したシステムでは、Apacheはデフォルトで /var/log/apache2/error.log エラーメッセージの場合。

CentOS、Fedora、およびRedHatから派生したシステムでは、Apacheはデフォルトでエラーをログに記録します。 /var/log/httpd/error_log ファイル。

ApacheのログでAH02572エラーメッセージの証拠を調べるには、 grep ディストリビューションの適切なログファイルでエラーコードを検索するユーティリティ。 のような他のツールがありますが less AH02572エラーの証拠を見つけるために使用できます。 grep エラーコードのある行のみが表示されるため、問題の影響を受けているかどうかを確認できます。

呼び出す grep UbuntuおよびDebianから派生したシステムでは次のようになります。

  1. sudo grep AH02572 /var/log/apache2/error.log

CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用します。

  1. sudo grep AH02572 /var/log/httpd/error_log

ApacheサーバーがAH02572エラーの影響を受ける場合、次のような出力が得られます。

Output
[Mon Aug 03 13:21:47.677235 2020] [ssl:emerg] [pid 26:tid 140355819735360] AH02572: Failed to configure at least one certificate and key for 203.0.113.0:443

サーバーがAH02572エラーの影響を受けている場合、このチュートリアルの次のセクションでは、 ssl モジュール、または秘密鍵と公開証明書ファイルを使用してApacheを構成します。

AH02572エラーの解決

AH02572エラーを解決する方法は3つあります。 エラーを解決するための最初のオプションは、承認された認証局(CA)によって署名された秘密鍵と公開証明書を使用してApacheを構成することです。 Let’s Encryptは無料のCAであり、これを使用して有効な証明書を発行できます。 このアプローチにより、サーバーとの間のトラフィックが適切に暗号化され、Webブラウザーやその他のHTTPクライアントがApacheサーバーを信頼するようになります。

もう1つのアプローチは、Apacheサーバーの自己署名証明書を作成することです。 このアプローチは、開発およびテスト環境、またはサーバーがインターネットに直接接続されておらず、システム間の信頼を手動で確立できる場合に役立ちます。

AH02572エラーを解決するための最後のアプローチは、Apacheのをオフにすることです。 ssl モジュール全体。 サーバーとの間のトラフィックは暗号化されないため、このオプションはあまりお勧めできません。 ただし、ローカル開発または信頼できる環境でのみApacheサーバーを使用している場合は、このアプローチが有効である可能性があります。

次のセクションでは、3つのオプションのそれぞれを使用してAH02572エラーを解決する方法について説明します。

Let’sEncryptTLS証明書を使用したAH02572エラーの解決

無料のLet’sEncryptTLS証明書を使用してApacheサーバーへのトラフィックを暗号化するには、このチュートリアルシリーズのLinuxディストリビューションに固有のガイドの1つを使用してください:Let’sEncryptでApacheを保護する方法

Let’s Encryptプロセスはほとんど自動化されており、スクリプトによってApacheが構成されます。 さらに、発行された証明書も自動的に更新されるため、将来期限切れになることを心配する必要はありません。

Let’s Encrypt シリーズでApacheを保護する方法に含まれていないLinuxディストリビューションを使用している場合、Let’s Encryptのドキュメントには、インタラクティブCertbot命令へのリンクが含まれています。有効なTLS証明書を持つApacheサーバー。

自己署名証明書を使用したAH02572エラーの解決

自己署名証明書を使用してApacheサーバーへのトラフィックを暗号化するには、Apache自己署名SSL証明書を作成する方法を説明するこのシリーズのチュートリアルの1つを使用してください。

これらのチュートリアルは、Apacheサーバーの秘密鍵と公開証明書を生成する方法を示しています。 また、使用方法も示します SSLCertificateFileSSLCertificateKeyFile 生成した証明書を使用してサーバーを構成するためのApacheディレクティブ。

Apache チュートリアルセットを使用した自己署名SSL証明書にリストされているディストリビューションを使用していない場合、この OpenSSL Essentials:SSL証明書、秘密鍵、およびCSRの操作ガイドは次のことができます。 Apacheで使用できる秘密鍵と自己署名公開証明書の作成に役立ちます。

注:可能であれば、無料のLet’sEncrypt証明書またはその他の市販のTLS証明書を使用することをお勧めします。 自己署名TLS証明書は、ブラウザやその他のHTTPクライアントによってデフォルトで信頼されていません。 その結果、ユーザーはサイトにアクセスしたときにセキュリティエラーが表示されます。 ただし、ローカル開発を行っている場合、またはユースケースで有効なTLS証明書が必要ない場合は、自己署名アプローチを選択できます。

を無効にする ssl モジュール

AH02572エラーを解決するための最後のアプローチは、ApacheのTLS/SSLサポートを無効にすることです。 ssl モジュール。 このアプローチは、TLS証明書を使用してサーバーへのトラフィックを暗号化するよりも望ましくないため、モジュールを無効にする前にTLSサポートが必要ないことを確認してください。

Apacheを無効にするには ssl UbuntuおよびDebianから派生したシステムのモジュールで、次のコマンドを実行します。

  1. sudo a2dismod ssl

CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してモジュールを無効にします。

  1. sudo rm /etc/httpd/conf.modules.d/00-ssl.conf

無効にしたら ssl モジュール、実行 apachectl 構成が有効であることをテストします。

  1. sudo apachectl configtest

成功しました apachectl configtest 呼び出すと、次のような出力になります。

Output
Syntax OK

これで、適切なを使用してApacheを再起動できます systemctl restart Linuxディストリビューションのコマンド。

UbuntuおよびDebianから派生したシステムでは、以下を実行します。

  1. sudo systemctl restart apache2.service

CentOS、Fedora、およびRedHatから派生したシステムでは、次のコマンドを使用してApacheを再起動します。

  1. sudo systemctl restart httpd.service

からのエラーがない場合 systemctl コマンドを実行すると、 ssl モジュールは正常に。

結論

AH02572: Failed to configure at least one certificate and key エラーの検出とトラブルシューティングは困難です。 彼らは通常と診断することはできません systemctl, journalctl、 と apachectl コマンド。 このチュートリアルでは、 grep AH02572エラーの証拠についてApacheのログを直接調べるユーティリティ。

次に、Let’s Encryptを使用してTLS証明書を使用してApacheを構成し、トラフィックを保護してAH02572エラーを解決する方法を学習しました。 また、開発環境および分離環境での自己署名TLS証明書の使用についても学びました。 最後に、をオフにする方法を学びました ssl それが必要とされないそれらの状況のためのモジュール。