본문 바로가기

HTTP 2.0

HTTP/2 에서 TLS 지원은 필수 사항일까?

HTTP/2 에 대한 이야기들 중 근래에 가장 논란이 되고 있는 것 중 하나가 TLS 에 대한 요구사항일 것 같습니다. 처음 SPDY / HTTP/2 에 대한 이야기가 나오면서 TLS 가 필수 조건이라는 소식에 이제 웹 환경이 완전히 Secure 로 넘어간다는 생각들을 많이 했었습니다. 그런데 결국 TLS 를 이용해야만 한다는 것은 연결을 만드는 과정에 오버헤드가 발생한다는 것이고 Let's Encrypt 등의 도움에도 불구하고 서비스 혹은 상황에 따라 부담이 될 수 있는 여지가 있었습니다.


이 때문에 HTTP/2 Working Group 에서는 암호화 되지 않은 HTTP/2 프로토콜 스펙에 대한 이야기가 오가고 있었고 정확한 시점은 확인해 보지 못했지만 TLS 의 지원이 필수는 아닌 것으로 정리된 것 같습니다. 스펙상으로 이부분은 h2c 라는 용어로 통칭되고 있고 TLS 터널링을 이용하지 않은 Non-encrypted 전송에 대한 이야기라고 이해하시면 되겠습니다 (자세한 이야기는 여기에 : https://http2.github.io/faq/#does-http2-require-encryption)




다만 표준의 진행이 이렇게 가고 있다 하더라도 브라우저들이 HTTP/2 스펙을 구현한 상황을 확인해 보면 이야기는 다소 달라집니다. 현재까지 HTTP/2 를 지원하는 것으로 알려진 모든 브라우저들은 HTTP/2 프로토콜 이용의 조건으로 TLS Handshake 를 전제하고 있습니다. 웹 컨텐츠를 소화하는 방식이 웹 브라우저만 있는 것은 아니겠지만, 대다수가 브라우저 기반이라고 가정했을 때 원본 서버에서 HTTP/2 를 이용하기 위한 전제조건으로 TLS 를 제공해야 한다는 것은 변함이 없을 것 같습니다.


참고 : http://caniuse.com/#search=http2


- NoPD -


  • 칸타빌레 2016.03.22 00:58 신고 댓글주소 수정/삭제 댓글쓰기

    모질라에서 출판한 Deprecating Non-Secure HTTP ( https://blog.mozilla.org/security/2015/04/30/deprecating-non-secure-http/ ) 글에서 엿볼수 있는 것처럼, 시큐어 웹을 향해가는 업체들의 발걸음은 매우 빠르고 거침이 없습니다. 모든 웹의 시큐어를 향하는 그들의 목표는 민감한 개인 정보의 보호나 웹사이트 변조를 통한 공격을 막는 것 뿐만이 아니라, 개인의 웹 접속 내역 조차도 보호가 필요하다는 그들의 철학이 깔려있다고 보며, 공개 WiFi나 공유기, 허브 등을 통해 웹접속 정보가 너무 쉽게 유출될 수 있는 현실에서 그들의 정책을 극렬하게 지지하여 왔습니다.

    HTTP/2에 암호화하지 않는 옵션이 추가되었지만 구글이나 모질라 같은 브라우저를 선도하는 업체가 시큐어웹을 선도하고 있기에 최종 사용자 단에서 이것이 사용되는 것을 볼일은 없다고 생각합니다.

    다만 [리버스 프록시 서버] - [다수의 응용 서버]로 구성되는 환경에서 응용서버로의 요청을 보내는 방법으로써 사용될 수 있다고 봅니다. 그런 환경에서는 하위 계층에서 암호화(IPSec)를 할 수 있기 때문에 암호화된 HTTP/2 불필요한 부하가 될 것이며, HTTP/1.1로 변환하여 요청할 경우 새로운 규격이 주는 장점을 많이 잃어버릴 테니까요.