Apacheは古いSSL証明書を提供している

Apacheは古いSSL証明書を提供している

私は Raspberry Pi (Debian) 上の Apache で Web ページをホストしていますが、サーバーが現在の証明書を発行できないようです。私は次のようにして自己署名 SSL 証明書を生成しました/home/pi/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 か月前に生成した古い証明書です - 以下を参照してください。

古い証明書の詳細

なぜこのようなことが起こるのか、何か考えはありますか?

答え1

発行された証明書は、何らかの理由で、Apache のデフォルトの「snakeoil」証明書であることが判明しました。私は次のようにしてこれを確認しました。

grep -i -r "SSLCertificateChainFile" /etc/apache2/

/etc/apache2/sites-available/default-ssl.. は、sneakoil 証明書を参照するファイルから 2 行を返しました。これらの行をコメント アウトすると、ブラウザーはカスタマイズされた証明書を返すようになりました。

答え2

このような問題の一般的な原因は、Apache の複数のインスタンスが実行中であることです。設定の変更は (再) 起動したプロセスによって取得されますが、リクエストは古い設定で実行されている古いプロセスによって処理されます。

サービスを停止します:

service apache2 stop

サイトにまだアクセスできるかどうかを確認します。アクセスできる場合は、原因が特定されたことになります。

今すぐ実行

ps aux | grep apache

実行中の apache2 プロセスとその PID のリストが表示されます。それらをすべて強制終了します (このコマンドは、Apache Tomcat のように、名前やユーザー名などに Apache が含まれる無関係なプロセスも返す場合があるので、それらを強制終了しないことをお勧めします)。

kill <pid>

ps aux を再度実行し、プロセスが実行されていないことを確認します。

サイトにアクセスできるかどうかを再度確認してください。アクセスできないはずです。

Apacheサービスを開始します

service apache2 start

新しい証明書が提供されていることを確認します。

プロセスを強制終了したくない場合は、システムを再起動してください。同じ効果が得られます。

関連情報