그렇다고 알고 있었는데 원인에 대해서는 생각해보지 않았었다. Dispelling the New SSL Myth라는 글에 그 이유가 나오는데,

그 이유는 매우 기술적이고, ‘닭과 계란’의 문제와 비슷하다. SSL 프로토콜 계층은 HTTP 프로토콜 계층 밑에 있고 HTTP를 캡슐처럼 싸고 있다. 한 번 SSL 연결(HTTPS)이 수립되면 Apache/mod_ssl이 클라이언트와 SSL 프로토콜 패러미터를 협상한다. 이를 위해 mod_ssl은 가상 서버의 설정을 참조해야 한다(가령 cipher suite와 서버 인증서 등). 그러나 올바른 가상 서버로 가기 위해 Apache는 HTTP 헤더 필드인 Host를 알아야 한다. 이를 위해 HTTP 요청 헤더들이 읽혀져야 한다. 이것은 SSL 핸드셰이크가 완료되기 전까지는 불가능한데, SSL 핸드셰이크 과정을 완료하기 위해서는 그 정보가 필요하다. 빙고!

blog comments powered by Disqus
  1. nohmad posted this