NGINX를 통한 QUIC+HTTP/3의 OpenSSL 지원

관리자
조회수 227


개발자는 일반적으로 공개된 공식 지원 라이브러리를 사용해 애플리케이션과 인프라를 구축하고자 합니다. HTTP/3을 사용하더라도 운영 인프라의 유지보수 비용이나 운영 복잡성을 증가시키지 않으면서 QUIC을 지원하는 편리한 라이브러리에 대한 요구가 강합니다.

많은 QUIC+HTTP/3 사용자의 경우 기본 암호화 라이브러리는 OpenSSL입니다. 대부분의 Linux 기반 운영 체제에 기본적으로 설치되어 있는 OpenSSL은 최고의 TLS(전송 계층 보안) 라이브러리이며 대부분의 네트워크 애플리케이션에서 사용됩니다.


문제: OpenSSL과 QUIC+HTTP/3 간의 비호환성

이처럼 폭넓게 사용되고 있음에도 불구하고 OpenSSL은 QUIC 지원에 필요한 TLS API를 제공하지 않습니다. 대신 OpenSSL 관리 위원회는 자체적으로 완전한 QUIC 스택을 구현하기로 결정했습니다. 이러한 노력은 OpenSSL v3.4에서 상당한 노력을 기울일 계획이지만, OpenSSL 로드맵에 따르면 2024년 말 이전에는 이루어지지 않을 것으로 보입니다. 또한 OpenSSL 구현의 초기 최소 기능 구현 제품에는 QUIC API 구현이 포함되지 않으므로 사용자가 OpenSSL에서 HTTP/3 지원을 받을 수 있는 명확한 경로가 없습니다.


QUIC TLS 지원 옵션

이러한 상황에서 HTTP/3 요구사항에 맞는 QUIC TLS 지원을 원하는 사용자를 위한 두 가지 옵션이 있습니다:

  • OpenSSL QUIC 구현 - 위에서 언급했듯이 OpenSSL은 현재 자체적으로 완전한 QUIC 스택을 구현하기 위해 노력하고 있습니다. 이 개발은 모든 QUIC 기능을 구현 내에 캡슐화하여 HTTP/3 사용자가 QUIC 관련 기능에 대한 걱정 없이 OpenSSL TLS API를 훨씬 쉽게 사용할 수 있도록 할 것입니다.
  • 보링SSL QUIC API를 지원하는 라이브러리 - BoringSSL, quicTLS, LibreSSL(모두 OpenSSL의 포크로 시작) 같은 다양한 SSL 라이브러리가 이제 BoringSSL QUIC API를 구현하여 QUIC TLS 기능을 제공하고 있습니다. 그러나 이러한 라이브러리는 OpenSSL만큼 널리 채택되지는 않았습니다. 또한 이 옵션을 사용하려면 소스에서 SSL 라이브러리를 빌드하고 QUIC+HTTP/3 지원이 필요한 모든 서버에 설치해야 하므로 모든 사용자에게 적합한 옵션이 아닐 수도 있습니다. 하지만 현재로서는 OpenSSL QUIC TLS 구현이 아직 준비되지 않았기 때문에 HTTP/3을 사용하고자 하는 사용자에게 이 옵션이 유일한 옵션입니다.


새로운 솔루션: OpenSSL 호환성 레이어

NGINX는 이러한 문제에서 영감을 받아 OpenSSL을 사용하는 QUIC+HTTP/3 배포를 간소화하고 프로덕션 환경에서 별도의 SSL 라이브러리를 유지 관리하는 데 따르는 복잡성을 피하기 위해 OpenSSL 호환성 레이어를 만들었습니다.

버전 1.25.0 이후 NGINX 오픈 소스 메인라인과 NGINX Plus R30에서 제공되는 OpenSSL 호환성 레이어는 패치나 리빌드 없이 OpenSSL 위에서 QUIC+HTTP/3을 실행할 수 있게 해줍니다. 따라서 QUIC 지원을 받기 위해 타사 TLS 라이브러리를 컴파일하고 배포해야 하는 종속성이 제거됩니다. 사용자가 타사 라이브러리를 사용할 필요가 없으므로 해당 라이브러리의 일정 및 로드맵에 대한 종속성도 완화되어 프로덕션 환경에 배포하기가 비교적 쉬운 솔루션이 됩니다.


OpenSSL 호환성 계층의 작동 방식

OpenSSL 호환성 계층은 다음 단계를 구현합니다:

  • QUIC 핸드셰이크를 OpenSSL에서 지원하는 TLS 1.3 핸드셰이크로 변환합니다.
  • TLS 핸드셰이크 메시지를 OpenSSL 안팎으로 전달합니다.
  • OpenSSL에서 핸드셰이크 및 애플리케이션 암호화 수준에 대한 암호화 키를 가져옵니다.
  • QUIC 전송 매개변수를 OpenSSL 안팎으로 전달합니다.

현재 OpenSSL의 채택 규모와 공식적인 QUIC+HTTP/3 지원 현황을 고려할 때, 쉽고 확장 가능한 QUIC 활성화 옵션은 올바른 방향으로 나아가는 단계라고 생각합니다. 또한 HTTP/3 채택을 촉진하고 귀중한 피드백을 제공할 수 있을 것입니다. 가장 중요한 것은 OpenSSL 호환성 레이어가 기업 사용자와 전체 NGINX 커뮤니티에 더욱 강력하고 확장 가능한 솔루션을 제공하는 데 도움이 될 것이라고 믿습니다.

주: 당사는 OpenSSL 호환성 계층의 가용성을 통해 NGINX 사용자에게 쉽고 확장 가능한 옵션을 제공하고 있지만, 사용자는 여전히 NGINX에서 BoringSSL, quicTLS 또는 LibreSSL과 같은 타사 라이브러리를 사용할 수 있는 옵션이 있습니다. 어떤 경로가 적합한지 결정하려면 요구 사항을 가장 잘 충족하는 접근 방식과 라이브러리를 종속성으로 컴파일하고 관리하는 데 얼마나 익숙한지 고려하세요.


0-RTT에 대한 참고 사항

0-RTT는 클라이언트가 TLS 핸드셰이크가 완료되기 전에 애플리케이션 데이터를 전송할 수 있도록 하는 QUIC의 기능입니다. 0-RTT 기능은 이전 연결에서 협상된 매개변수를 재사용함으로써 가능합니다. 이 기능은 클라이언트가 중요한 매개변수를 기억하고 서버가 동일한 정보를 복구할 수 있는 TLS 세션 티켓을 서버에 제공함으로써 활성화됩니다.

이 기능은 QUIC의 중요한 부분이지만, 아직 OpenSSL 호환성 계층에서는 지원되지 않습니다. 0-RTT가 필요한 특정 사용 사례가 있는 경우, 로드맵에 반영될 수 있도록 피드백을 보내주시기 바랍니다.


QUIC+HTTP/3 및 OpenSSL을 사용하는 NGINX에 대해 자세히 알아보기

지금 바로 NGINX 오픈 소스로 NGINX의 OpenSSL 호환성 레이어를 사용하거나 30일 무료 NGINX Plus 체험판을 시작하실 수 있습니다. 도움이 되셨기를 바라며 여러분의 피드백을 환영합니다.

아래 리소스에서 QUIC+HTTP/3 및 OpenSSL이 포함된 NGINX에 대한 자세한 정보를 확인할 수 있습니다.

  • NGINX의 QUIC 네트워킹 및 암호화에 대한 입문
  • 바이너리 패키지가 프리뷰 NGINX QUIC+HTTP/3 구현에 사용 가능
  • NGINX에서 QUIC 및 HTTP/3 지원을 위한 로드맵
  • 더 안전한 세상을 위한 오픈 소스 지원: F5 NGINX, 렛츠 인크립트 및 OpenSSL 후원 발표



위 내용과 같이 NGINX Plus를 활용하여 Demo 가 필요하시면 하단의 전문가에게 상담받기 버튼을 클릭해주세요

 


전문가에게 상담받기


'


0 0