Apache構成エラーAH02572:少なくとも1つの証明書とキーの構成に失敗しました
序章
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ディストリビューションで次のコマンドを実行します。
- sudo systemctl status apache2.service -l --no-pager
CentOSおよびFedoraシステムでは、次のコマンドを使用してApacheのステータスを調べます。
- 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ディレクティブを使用して、生成した証明書を使用してサーバーを構成する方法も示します。
自己署名SSL証明書とApacheのチュートリアルセットに記載されているディストリビューションを使用していない場合は、この 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
エラーは、検出とトラブルシューティングが困難です。 通常のsystemctl
、journalctl
、およびapachectl
コマンドでは診断できません。 このチュートリアルでは、grep
ユーティリティを使用して、AH02572エラーの証拠がないかApacheのログを直接調べる方法を学習しました。
次に、Let’s Encryptを使用してTLS証明書を使用してApacheを構成し、トラフィックを保護してAH02572エラーを解決する方法を学習しました。 また、開発環境および分離環境での自己署名TLS証明書の使用についても学びました。 最後に、ssl
モジュールが不要な状況でオフにする方法を学びました。