Raspberry Pi(Debian)でApacheを使用してWebページをホストしていますが、サーバーに現在の証明書を発行させることができないようです。 /home/pi/ssl/
で自己署名SSL証明書を次のように生成しました。
openssl req -new -sha256 -x509 -nodes -days 365 -out example.com.pem -keyout example.com.key
Apacheは、ファイル.pem
から.key
と/etc/Apache2/sites-enabled/owncloud.conf
のファイルペアを検索します。
SSLCertificateFile /home/pi/ssl/example.com.pem
SSLCertificateKeyFile /home/pi/ssl/example.com.key
これらのファイルを削除してApacheを再起動すると、エラー[FAIL] Reloading web server config: Apache2 failed!
が発生します。このエラーは、新しい証明書ファイルのペアが生成された後に再起動しても発生しないため、Apacheは証明書を呼び出しているようです。
ただし、ブラウザ(ChromeシークレットまたはFF/Safariのプライベートウィンドウ、およびこれまでドメインを要求したことがないコンピュータのブラウザ)で取得される証明書は、1か月前に生成した古い証明書です。以下を参照してください。
なぜこれが起こっているのか考えはありますか?
発行されている証明書は、何らかの理由でデフォルトのApache「スネークオイル」証明書であることが判明しました。私はこれを次のように確立しました:
grep -i -r "SSLCertificateChainFile" /etc/Apache2/
..ファイルから2行を返しました/etc/Apache2/sites-available/default-ssl
スネークオイル証明書を参照しました。これらの行をコメントアウトすると、ブラウザーはカスタマイズされた証明書を返すようになりました。
このような問題の一般的な原因は、Apacheの複数の実行中のインスタンスです。構成の変更は、(再)開始したプロセスによって取得されますが、要求は、古い構成で実行されている古いプロセスによって処理されます。
サービスを停止します。
service Apache2 stop
サイトに引き続きアクセスできるかどうかを確認します。はいの場合、原因を特定しました。
今すぐ実行
ps aux | grep Apache
実行中のApache2プロセスとそのPIDのリストが表示されます。それらをすべて強制終了します(このコマンドは、Apache Tomcatのように、名前/ユーザーにApacheが含まれる無関係なプロセスを返す場合もあります。強制終了したくない場合があります)。
kill <pid>
Ps auxを再度実行し、プロセスが実行されていないことを確認します。
サイトにアクセスできるかどうかをもう一度確認してください。あるべきではありません。
今すぐApacheサービスを開始します
service Apache2 start
新しい証明書が提供されていることを確認します。
プロセスを強制終了したくない場合は、システムを再起動できます。同じ効果があります。