Apache構成エラーAH02572:少なくとも1つの証明書とキーの構成に失敗しました

提供:Dev Guides
移動先:案内検索

序章

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

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

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

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

AH02572: Failed to configure at least one certificate and keyエラーメッセージのトラブルシューティングを行っている場合、Apacheは実行されません。 systemctlステータスには、failedメッセージが表示されます。

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

UbuntuとDebianシステム

sudo systemctl status apache2.service -l --no-pager

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

CentOSとFedoraシステム

sudo systemctl status httpd.service -l --no-pager

-lフラグは、systemctlが長い行を楕円()に置き換えるのではなく、行の内容全体を出力することを保証します。 --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エラーメッセージを示す出力には何もありません。 journalctlコマンドを使用してApacheのsystemdログを調べたり、apachectl configtestを使用してApacheの構成ファイルを確認したりしても、エラーのトラブルシューティングに使用できる情報を見つけるのに役立ちません。

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はエラーコードのある行のみを表示するため、影響を受けているかどうかを確認できます。問題。

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

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

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

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サーバーの秘密鍵と公開証明書を生成する方法を示しています。 また、SSLCertificateFileおよびSSLCertificateKeyFile Apacheディレクティブを使用して、生成した証明書を使用してサーバーを構成する方法についても説明します。

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

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


sslモジュールの無効化

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

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

sudo a2dismod ssl

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

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

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

sudo apachectl configtest

apachectl configtestの呼び出しが成功すると、次のような出力が得られます。

OutputSyntax OK

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

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

sudo systemctl restart apache2.service

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

sudo systemctl restart httpd.service

systemctlコマンドからのエラーがない場合は、sslモジュールを正常に無効にしています。

結論

AH02572: Failed to configure at least one certificate and keyエラーは、検出とトラブルシューティングが困難です。 通常のsystemctljournalctl、およびapachectlコマンドでは診断できません。 このチュートリアルでは、grepユーティリティを使用して、AH02572エラーの証拠がないかApacheのログを直接調べる方法を学びました。

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