Apache는 이전 SSL 인증서를 제공합니다.

Apache는 이전 SSL 인증서를 제공합니다.

Raspberry Pi(Debian)에서 Apache를 사용하여 웹페이지를 호스팅하고 있는데 서버에서 현재 인증서를 발급할 수 없는 것 같습니다. 다음을 사용 하여 자체 서명된 SSL 인증서를 생성했습니다 /home/pi/ssl/.

openssl req -new -sha256 -x509 -nodes -days 365 -out example.com.pem -keyout example.com.key

Apache는 다음을 포함하는 file 에서 .pem및 file 쌍을 찾습니다 ..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 Incognito 또는 FF/Safari 개인 창, 심지어 이전에 도메인을 요청한 적이 없는 컴퓨터의 브라우저)에서 제공되는 인증서는 한 달 전에 생성한 오래된 인증서입니다. 아래를 참조하세요.

이전 인증서 세부정보

왜 이런 일이 발생하는지 아시나요?

답변1

발급된 인증서는 어떤 이유로 기본 Apache "snakeoil" 인증서인 것으로 나타났습니다. 나는 이것을 다음과 같이 확립했습니다.

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

/etc/apache2/sites-available/default-ssl.. snakeoil 인증서를 참조하는 파일에서 2줄을 반환했습니다 . 이 줄을 주석 처리하면 브라우저가 이제 사용자 정의된 인증서를 반환합니다.

답변2

이러한 문제의 일반적인 원인은 실행 중인 여러 Apache 인스턴스입니다. 구성 변경 사항은 사용자가 (다시) 시작한 프로세스에 의해 선택되지만 요청은 이전 구성으로 실행 중인 이전 프로세스에서 처리됩니다.

서비스를 중지합니다.

service apache2 stop

사이트에 계속 액세스할 수 있는지 확인하세요. 그렇다면 원인을 확인한 것입니다.

이제 실행

ps aux | grep apache

실행 중인 apache2 프로세스와 해당 PID 목록을 제공합니다. 모두 종료합니다(참고로 이 명령은 Apache Tomcat과 같이 이름/사용자 등에서 Apache와 관련 없는 프로세스를 반환할 수도 있으므로 종료하고 싶지 않을 수도 있습니다.)

kill <pid>

ps aux를 다시 실행하고 프로세스가 더 이상 실행되지 않는지 확인하십시오.

사이트에 액세스할 수 있는지 다시 확인하세요. 그래서는 안됩니다.

이제 아파치 서비스를 시작하세요

service apache2 start

새 인증서가 제공되고 있는지 확인하세요.

프로세스를 종료하지 않으려면 시스템을 재부팅할 수 있습니다. 동일한 효과가 있습니다.

관련 정보