https로 접속하면 다른 사이트가 나온다?

January 02, 2012 09:40 PM

오늘 회사 동료가 아주 황당한 것을 알려줬습니다. 구글에서 'site:hyeonseok.com'을 검색하니 영창출판사라는 저는 전혀 모르는 사이트가 제 도메인으로 서비스가 되고 있었습니다. http로 접속을 하면 제 사이트가 정상적으로 나오고 https로 접속을 하면 다른 사이트가 나오는 것입니다. 서버 설정상의 문제라고 생각을 하고 호스팅 업체에 문의를 해 봤습니다. 저는 당연히 고쳐질 것으로 기대를 했는데 고쳐줄 수 없다고 하네요.

요지는, https는 ssl 관련 보안설정이 되어 있는 부분이고 내가 사용하는 호스팅 서버는 공용서버이고 같은 서버를 사용하는 사람중의 하나가 보안인증서를 구매하여 https 서비스를 받고 있기 때문에 별도 설정은 해줄 수 없다는 것입니다. "기본적인 https으로 연결되는 사이트를 변경은 진행이되지 않습니다."라는 좀 이상한 답변이 왔는데 안된다는 말 같습니다. 저와 같은 서버를 사용하는 다른 사이트도 https로 접속을 하니 영창출판사페이지가 나오더군요.

별 생각이 다 들었습니다. 저가 상품 사용자라고 무시하는 건가? 서버를 변경해 달라고 신청해야 하나? 다른 호스팅 업체들도 이런식으로 관리하나? 인증서 장사를 하려는 건가? 보안상 문제있는 것 아닌가? 내가 인증서를 구매하면 다른 서버로 이전해주고 그 서버의 모든 도메인을 내가 사용 할 수 있게 되나? 기술적으로 가능하고 말고 까지는 잘 모르겠습니다. 하지만 프로토콜은 다르지만 제 도메인으로 다른 사이트가 서비스되고 있는 문제를 그냥 방치하는 자세는 이해 할 수가 없습니다.

CAFE24가 저렴한 비용에 안정적인 서비스를 제공해주고 있어서 나름 굉장히 오래 이용해 왔는데 이런 관리는 정말 납득이 안갑니다. 보안서비스를 적용했다고 하면서 덤으로 다른 사이트를 피싱할 수 있게 서비스를 제공하고 있네요. 좋은 호스팅 업체 있으면 추천 부탁드립니다.

문제 해결: CAFE24 쪽에서 CS 답변에 문제가 있었다고하고 서버의 설정을 바꿔서 지금은 다른 사이트가 나오지 않습니다. 많은 분들이 제가 잘 모르던 부분들을 친절하게 설명해주셔서 도움이 많이 되었습니다. 해프닝은 있었지만 문제를 인지한 다음의 CAFE24쪽의 빠른 대응도 놀랐습니다. 해결하고 확인 전화까지 주셨더군요. 갑자기 CAFE24 로열티++;

Comments

  • On January 02, 2012 10:34 PM, 아라크넹 said:

    안타깝게도 카페24 측의 답변이 기술적으로는 틀리지 않습니다.

    본래 HTTP/1.0까지는 도메인 하나 별로 IP가 (그리고 보통은, 서버도) 하나씩 존재해야 했습니다. 하지만 이건 비효율적이니까 HTTP/1.1에서 클라이언트가 IP와는 별개로 무슨 도메인으로 들어 온 건지 서버한테 (Host 헤더로) 함께 보내 주면 서버가 그걸 보고 적절한 사이트를 보여 줄 수 있게 하는 기능이 추가되었습니다. 즉, DNS에서 도메인 이름을 IP로 한 번 대응시켜 주고, 그 IP에서 도메인 이름을 다시 한 번 개별 사이트로 대응시켜 주는 겁니다. 이걸 가상 호스팅이라고 흔히 부르며 대부분의 웹 호스팅에서 잘 사용하고 있는 기능이지요.

    그런데 SSL이 들어 가면 문제가 복잡해집니다. DNS에서 도메인 이름을 IP로 대응시켜 주는 데까지는 잘 동작하는데, SSL에서는 인증서를 정해진 하나만 사용할 수 있으니까 여러 개의 도메인 이름을 쓰려면 그 이름을 모두 포함하도록 *인증서를 바꿔야 합니다*. 즉 아무리 서버가 도메인 이름을 다시 대응시키는 기능이 있더라도 SSL에서 걸리는 사태가 발생할 수 있습니다. 이 문제는 워낙 잘 알려진 문제라서 나중에 SNI(Server Name Indication)이라고, 클라이언트가 SSL에도 접속하는 데 사용한 도메인 이름을 힌트로 줄 수 있는 기능이 들어 가긴 했습니다만, 운영체제에 따라서 안 되는 곳도 있고 설정 문제도 있습니다(흔히 쓰는 아파치 웹서버의 경우 2.0.x 버전에서 아예 지원하지 않는 걸로 알고 있습니다).

    다행히도 웬만한 브라우저는 접속한 도메인 이름과 실제로 받은 인증서의 도메인 이름이 다르면 오류를 내기 때문에 "아예 모르고" 접속하는 일은 적지 않을까 싶습니다만, 웹 브라우저, 서버, 그리고 그 서버를 사용하는 호스팅 업체까지 세 박자가 다 맞아야 하는 문제라서 해결하기는 쉽지 않을 것 같습니다. 가장 쉬운 해결책은 완전히 별도 IP를 받는 서버로 옮기는 것인데 (가상 "서버" 호스팅 같은 것으로 어느 정도 가능할 수 있습니다) 여전히 그렇게 쉽다고 하긴 힘듭니다.

  • On January 02, 2012 10:56 PM, 신현석 said:

    가상호스트에서 포트와 도메인이 모두 일치할 때에만 해당 사이트가 나오게는 할 수 없나요? 저는 그냥 제 도메인으로 https 접속을 했을 때에는 사이트가 안나왔으면 하는 것이거든요. CAFE24에서 이것이 문제가 될 수 있다는 것을 몰랐을리는 없을 것 같고...결국은 중이 떠나야 하는 상황인것 같아서 씁씁합니다.

  • On January 02, 2012 10:59 PM, 준호 said:

    윗분 말씀대로인데 호스팅 업체(심지어 많은 수의 웹사이트를 호스팅해야 하는 CDN도)에서 주로 일어날 수 있는 문제입니다. 다만 이 경우는 문제가 좀 심각한게,

    1) hyeonseok.com. 1800 IN A 211.196.153.120
    2) www.orthobook.com. 1800 IN CNAME orthobook.com.
    orthobook.com. 1800 IN A 211.196.153.120

    1)과 2)의 IP가 같습니다. 이거야 '웹'호스팅 사이트는 흔히 있는 일이니 그렇다 치고,
    영창출판사 도메인이 www.orthobook.com 이니까 해당 사이트에 https:// 로 접속하면
    영창출판사 사이트가 뜨는데 이것도 문제입니다. 왜냐 하면 브라우저로 접속하면 경고창이
    나오는데, SSL 인증서의 호스트 이름이 www.cafe24.com 으로 되어 있기 때문입니다.
    이러니 https://www.orthobook.com으로 접속해도 경고창이 뜹니다.
    (FQDN과 SSL인증서의 CN이 일치하지 않으므로) 즉 https://www.orthobook.com
    도 엄밀히 말하면 영창출판사 웹사이트도 아닙니다.

    또한 IP로 직접 접속해 보면,

    1)https://211.196.153.120 으로 접속 --> 영창출판사 사이트가 뜹니다.
    2)http://211.196.153.120 으로 접속 --> Forbidden

    이렇게 되어 있는 걸로 보아 cafe24.com 의 SSL 서버쪽 설정이 잘못되어 있는 것으로 보입니다.
    즉 HTTPS 설정에서 IP로 접속하는 경우 (HTTP 1.1 에서 Host: 를 생략하는 경우와 동일)의 기본 사이트가 영창출판사로 되어 있기 때문에 해당 IP에 걸려 있는 HTTP의 수많은 도메인 (신현석씨
    싸이트도 그중의 하나겠죠)들이 https:// 로 접속하는 것 만으로 모두 영창출판사 사이트로 연결되는 것입니다. HTTP로 IP에 직접 접근하면 Forbidden 오류가 나는 것으로 보아서 이쪽 설정은 제대로 한 것 같은데 HTTPS쪽 설정이 문제가 있다고 말할 수 있겠네요.

    원칙적으로는 HTTPS사이트는 1) HTTP와 HTTPS양쪽으로 접속 했을 때 동일 사이트가 뜨도록 설정해야 하고 2) 잘못된 호스트로 접속시 적절한 메시지를 표시해서 HTTP쪽으로 리다이렉션하든가 403 오류를 내든가 해야 합니다.

    이는 HTTPS사이트가 FQDN = IP 가 1:1 로 대응관계가 이루어져야 하는 현실상 (윗분이 말씀하신 SNI를 쓰면 피해갈 수 있는 모든 서버/브라우저가 지원하지 않으므로 현실적으로 아직 쓰기 힘듭니다) 어쩔 수 없는 문제입니다. 보통 웹호스팅 사이트는 80과 443 포트가 동시에 열려 있으므로 신경쓰지 않으면 이런 일이 발생합니다.

    해결책은 윗분 말씀대로 IP를 전용해서 쓸 수 있는 서버호스팅을 쓰는 방법인데 비용이 더 들겠지요. 요즘에는 IPv4 주소 고갈로 인해서 SSL사이트에 IP를 전용으로 할당하다간 웹호스팅 업체 수지가 맞지 않으므로... 어쨌든 요약하면 웹호스팅쪽에서 HTTPS 설정을 제대로 하였다면 이런 오해스런 문제는 없을 것입니다. 관찰 결과로만 봐서는 https:// 의 해당 사이트는 영창출판사 사이트도 아니니까요 (SSL 인증서의 CN이 일치하지 않음).

  • On January 03, 2012 12:51 AM, k said:

    제 짧은 지식으로도, 위와 같은 상황은 웹호스팅을 받는 이상 피할수 없을것 같습니다.
    https로 forbidden이 나오게 하는것도 웹호스팅 업체 입장으로서는 무리한 요청이 될것 같습니다.
    제일 좋은 방법은 호스팅을 공용이 사용하는 웹호스팅이 아닌, 개별호스팅(서버호스팅 같은)으로 해야할것 같습니다.

  • On January 03, 2012 05:08 AM, 달리나음 said:

    EC2의 micro 버전을 쓰는게 현실적으로 제일 편한 해결책일 것 같습니다. 아니면 EC2-backed인 PaaS를 쓰거나요.

  • On January 03, 2012 09:53 AM, Channy said:

    별 희안한 웹 호스팅 업체가 다 있네요. SSL 서버 운영은 따로 해야지 웹 호스팅 공용 서버에다가 SSL을 붙여 놓다니... 인증서를 보니까 www.cafe24.com 건데, 업체에다 이야기해서 SSL 서비스를 중지해달라고 하세요.

  • On January 03, 2012 11:33 AM, i said:

    SSL Layer를 공부하시면 왜 그런지 알 수 있는 내용 입니다.
    최근 이슈도 아니고, 굉장히 오래전부터 나왔던 이슈 입니다.
    특정 업체 문제가 아니고 Layer 설계 자체가 그렇게 되어 있습니다.
    기술적으로 해결하기 어렵지요.
    프로토콜에 대한 개정이 있으면 모를까.. 힘들겠지요.
    위에서 SNI 언급이 있었지만, 표준으로 사용하면서 서비스 하기는 무리가 있습니다.

    SSL Layer 프로세스상 커넥션이 맺어짐과 동시에 SSL 터널이 생성되는데,
    이때 서버측에서 취할 수 있는 액션이 해당 포트로 들어오는 접속에 대해서
    서버에 설정되어 있는 SSL 키를 가지고 터널을 생성합니다.
    호스트 정보를 비롯한 모든 데이터는 그 이후에 서버로 전송되게 됩니다.
    즉, 도메인을 보고 SSL 터널을 생성하는게 아니라는 거지요

    그 반대로 도메인에 대한 패킷이 전달 된 이후 SSL 터널이 생성된다면
    그것은 SSL 프로토콜 규약을 위배하는 일이 되버릴테니까요

    웹서버들이 취할 수 있는 액션 자체가 단일화 되어 있기 때문에,
    현재 1개 인증서당 1개 포트밖에 설정할 수밖에 없는 이슈가 생기는거지요
    이 때문에 전세계 웹호스팅 업체들이 공용서버에 SSL을 설치할때
    특정 포트를 할당해주는거지요
    또한, 멀티도메인 인증서 및 와일드카드 인증서가 나온 이유이기도 합니다.

    마지막으로 위에 답변중에 Forbidden 처리에 대한 얘기가 있는데..
    이 부분 또한 동일한 이슈 입니다.

    보통 아파치를 기준으로 들면 Host 매치가 되지 않는 데이터가 들어오면
    여러개의 VirtualHost의 최상단에 매치되도록 알고리즘이 구성되어 있습니다.
    (최근 유행하는 nginx는 반대로 최하단에 매치됩니다. reverse sorting)

    이같은 알고리즘으로 인해 보통 최상단의 버츄얼호스트에는 null에 대한 처리를 합니다.
    보통 서버의 대표도메인을 설정해둔다거나 하는거죠
    위 애기대로 보면 해당 업체는 forbidden이 뜰 수 있도록 처리해놨겠지요

    그치만 앞서 말했듯이 SSL에서는 그게 안됩니다.
    최상단의 버츄얼호스트 블럭을 설정하는 순간 443 포트를 뺏기기 때문에
    null 처리 또한 할 수가 없는거죠

    내용을 보면 기본 포트인 443으로 접속했을 경우 영창출판사가 뜬다고 하셨으니
    영창출판사가 현재 443 포트를 쓰고 있는것 같네요

    답은 서버를 옮기던지 IP를 따로 받아서 쓰던지 하는게 젤 빠르고 쉽습니다.
    공용서버에서 해결하긴 어려운 이슈 입니다.

  • On January 03, 2012 01:07 PM, 달리나음 said:

    몇몇 분들은 엉뚱한 이야기를 하시는데요. IP를 공통으로 쓰는 서비스에서 특정 서비스에만 HTTPS를 지원하게 한 것은 이상한 정책이죠. 그리고 현석님에게 전달된 답변도 잘못된 고객응대고요. 그게 기술적인 이유보다 더 중요한 겁니다.

  • On January 04, 2012 03:18 PM, Key said:

    미국의 경우 SSL을 신청하면 무조건 데디케잇 아이피를 제공해주고 있습니다. 대표적인 관리툴인 Plesk나 cPanel 등에서도 SSL 셋업시 쉐어드 아이피에는 셋업이 안되게 되어 있는데... 좀 이상하네요.

  • On January 05, 2012 10:38 AM, 빗물 said:

    제가 알고 있기에도 HTTPS를 쓰는 사이트는 공용서버에 입주 시키지 않는 것 같던데..
    CAFE24쪽 실수가 있었던 것 같네요.. 그래도 잘 해결되어 다행이에요^^

  • On September 10, 2012 11:36 PM, ryush00 said:

    아직도 https://hyeonseok.com이
    orthobook.com으로 연결되네요.

  • On September 11, 2012 10:55 AM, 신현석 said:

    엇, 아직도 그런 경우가 있나요? 전 연결되지 않는데 이게 서버말고 접속 환경 영향을 받을 수도 있나요?

Post a comment

:

: 공개 되지 않습니다. Gravata를 표시 합니다.

:

: HTML 태그를 사용할 수 없습니다.