SNI와 HTTP 제공 도메인 간 충돌 포트 80에 바인딩,

나는 최근에 작은 상점이있는 WordPress 웹 사이트를 호스팅 제공 업체에서 Ubuntu Server 12.04.2 LTS 및 Apache 2.2.22를 실행하는 서버로 옮겼습니다. 상점에 SSL이 필요합니다. 내가 하나가 특정 IP와 다른이 두 포트 443에 바인딩의 포트 80에 바인딩, 서버에 대한 새로운 IP에 대한 간단한 가상 호스트의 몇 가지를 설정 ServerName www.example.com하고 ServerAlias example.com가상 호스트 설정에. 나는있다 SSLStrictSNIVHostCheck off.

사이트가 매우 느리게 실행되고 있지만 작동 중입니다. 오류 로그에 다음이 표시됩니다.

[Error] Hostname example.com provided via SNI and hostname www.example.com provided via HTTP are different

속도 저하가 위의 메시지와 관련이 있다고 생각합니다. 그것이 왜 나타나고 내가 그것에 대해 무엇을 할 수 있는지에 대한 아이디어가 있습니까?



답변

오류 로그가 아닌 액세스 로그를보십시오. 오류 시간 및 날짜를 ​​사용하여 문제가되는 요청을 식별하고 사용자 에이전트를 찾을 수 있어야합니다. 제 경우에는 봇이었습니다.

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.2)"

내 서버는 HTTP 400 : Bad Request로 응답합니다.

내가 실수하지 않는 한, TLS 협상에서 클라이언트는 호스트 이름을 두 번 보냅니다. SSL 연결이 SNI (서버 이름 표시)에서 설정되기 전에 한 번, 실제 HTTP 요청에서 한 번 후에 호스트 이름을 두 번 보냅니다. 서버 이름이 일치하지 않으면 클라이언트가 고장난 것이므로 서버 구성 방법과 관련이 없습니다.

어쩌면 그들은 언젠가 봇을 고칠 것입니다. 그동안 무시할 수 있습니다. 요청이 매우 빠르지 않으면 호스트 속도가 느려질 수 있습니다.


답변

이 오류는 일부 클라이언트에서 의도적 으로 서버의 취약점을 테스트하기 위해 발생합니다. researchscan367.eecs.umich.edu유지 관리하는 서버 에서 요청 이 오류 를 유발 한 것으로 나타났습니다 . 이 경우 오류가 발생하는 것이 좋습니다.

어떤 종류의 공격이 가능한지 궁금해서 Security Stack Exchange에 대해이 질문을 했습니다. Apache2의 오류 코드 AH02032로 어떤 종류의 공격을 막을 수 있습니까?


답변

처음에 클라이언트 문제처럼 들립니다 …이 문제를 일으키는 브라우저는 무엇입니까?

이 메시지는 SSL 연결 설정 중에 클라이언트가 보내는 호스트 이름이 SSL 계층이 가동되면 클라이언트가 HTTPS 요청에서 보내는 것과 같지 않다는 것을 나타냅니다.


답변

필자의 경우 밑줄로 새 가상 호스트를 만드는 것이 문제였습니다. 와일드 카드 SSL 인증서가 있습니다.

작동하지 않았다 :

<VirtualHost *:443>
        SSLEngine on
        ServerName sub_domain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

Apache가 성공적으로 다시 시작되었지만 HTTP 400 오류가 발생했습니다. 오류 로그에서 :

[Wed Sep 05 11:28:00.349960 2018] [ssl:error] [pid 19906:tid 140392626808576] AH02031: Hostname sub_domain.example.com provided via SNI, but no hostname provided in HTTP request

그러나 밑줄을 제거하면 효과가 있습니다.

<VirtualHost *:443>
        SSLEngine on
        ServerName subdomain.example.com
        Redirect / https://www.example.com/restofmyredirectlink
</VirtualHost>

답변

/ etc / hosts 파일을 검사하여 도메인 이름을 로컬 (내부) IP 주소에 할당하고 있는지 확인하십시오. / etc / hosts service nscd restart를 변경 한 후 이름 서비스 캐시 데몬을 다시 시작하는 것을 잊지 마십시오