웹 호스트에 VPN 소프트웨어를 설치하면 서비스 구성이 바뀔 수 있다, 그러나 예상치 못한 인증서가 Apache 파일이 다시 쓰였다는 증거는 아니다. 무언가가 그 인증서를 브라우저에 제시했고, 첫 번째 작업은 그것을 특정하는 일이다. 리스너와 가상 호스트가 식별되기 전까지 모든 수리는 잘못된 계층에 적용한 추측이다. 아래 점검은 모두 읽기 전용이다.

사안을 결정할 사실을 모으는 동안 아무것도 재시작하거나 제거하거나 덮어쓰지 않는다.

브라우저가 실제로 받은 인증서를 읽어라

호스트 이름, 각 주소 체계에서 확인된 주소, 포트, 브라우저가 문제 삼은 인증서 세부 정보를 기록한다. A와 AAAA 레코드에 모두 확인되는 이름은 서로 다른 두 프런트엔드에 닿을 수 있고, 셸 접근 권한이 있는 호스트는 그중 하나일 뿐일 수 있다. 프록시 뒤의 브라우저는 다시 세 번째 경로를 탈 수 있다. 어느 것이 경고를 만들었는지 추측하면 가진 유일한 관찰을 낭비한다.

그다음 같은 경로에 있는 머신에서 핸드셰이크를 재현하고, 주소를 명시하며 의도한 서버 이름을 보내 응답이 기본 호스트가 아니라 사이트를 반영하게 한다.

openssl s_client -connect 198.51.100.37:443 -servername www.example.net </dev/null 2>/dev/null |
  openssl x509 -noout -subject -issuer -fingerprint -sha256 -ext subjectAltName

주체 대체 이름과 지문을 기대하는 인증서와 맞춰 본다. 익숙한 발급자와 비교해서는 안 되며, 서버 이름 없이 맨 주소에 연결하면 기본 인증서가 선택될 수 있어 실제로는 질문이 틀린 것인데 잘못된 파일처럼 보인다.

그 포트에 묶인 프로세스를 식별하라

연결을 받아야 할 호스트에서 리스너를 나열하고 바인드 주소, 주소 체계, 프로세스 소유자를 기록한다. 루프백 주소에 묶인 서비스는 모든 인터페이스에 묶인 서비스와 같지 않고, 컨테이너 게시는 공용 리스너를 전혀 다른 곳에 둘 수 있다.

sudo ss -ltnp 'sport = :443'
sudo ss -ltnp | grep -E ':(443|943)\b'

TLS를 앞단의 로드 밸런서나 프록시가 종료한다면 여기서 멈추고 대신 그 프런트엔드를 살펴라. 뒤의 Apache 인스턴스는 공용 브라우저에 인증서를 전혀 제시하지 않을 수 있으므로 그 구성을 편집해도 브라우저가 보는 것은 달라지지 않는다. 소켓 보기와 외부 핸드셰이크가 같은 경로를 설명해야 하며, 이 비교가 바로 그것을 확인한다.

파일보다 먼저 가상 호스트를 맞춰라

Apache가 종료 지점이라면 그 주소와 이름에 어떤 가상 호스트가 이기는지 물어라. 제어 명령은 각 소켓에 맞는 그룹, 선언된 서버 이름, 기본으로 취급되는 호스트를 포함한 실제 레이아웃을 출력한다. 그 답 없이 인증서 파일을 편집하는 것이 올바른 파일에서 잘못된 사이트가 서비스되는 방식이다.

sudo apachectl -S

Apache의 SSL 자주 묻는 질문은 서버 이름 표시가 인증서를 어떻게 고르는지 설명한다. HTTP의 Host 헤더는 핸드셰이크 이후에 도착하므로 이미 제시된 것을 되돌려 바꿀 수 없고, 일치하지 않거나 없는 이름은 기본 호스트로 되돌아간다.

ServerAlias에 오타가 있는 이름 기반 가상 호스트가 정확히 이 증상을 만들며, 먼저 모든 것을 잡는 호스트를 불러오는 두 번째 구성 파일도 마찬가지다. 둘 다 그 레이아웃 목록에 보인다.

주장하는 모든 경로에서 수정을 검증하라

승인된 변경 후 각 주소 체계에 대해 호스트 이름별 점검을 반복하고, 우회 플래그가 아니라 브라우저의 일반 검증으로 마무리한다. 공유 리스너 설정을 건드리기 전에 별도의 관리 경로를 확보한다, 거기서의 실수는 되돌리는 데 쓸 접근 권한을 없애기 때문이다. 그다음 어떤 리스너가 응답했고 어떤 가상 호스트가 일치했으며 전후에 어떤 인증서가 제공됐는지 적는다.

패키지를 제거하면 레이아웃이 바뀌고 원래 불일치가 설명 없이 남을 수 있어 그 기록이 수리보다 오래 남는다.

원하는 것은 의도한 진입점에서 의도한 사이트가 응답하는 것이다. 무관한 서비스가 사라진 뒤 다른 인증서가 나오는 것은 브라우저가 문제 삼기를 멈추더라도 그 결과가 아니다.

관련 글