응용 프로그램 계층 프로토콜 네고시에이션
Application-Layer Protocol NegotiationApplication-Layer Protocol Negotiation(ALPN)은 Transport Layer Security(TLS; 트랜스포트층 보안) 확장입니다.이 확장에서는 애플리케이션 계층은 추가 라운드 트립을 회피하고 애플리케이션 계층 프로토콜과는 무관한 방식으로 안전한 연결을 통해 어떤 프로토콜을 수행해야 하는지 네고시에이트할 수 있습니다.추가 라운드 트립 없이 HTTP/2 연결을 확립하기 위해 사용됩니다(클라이언트 및 서버는 HTTP/1.1을 사용하여 이전에 HTTPS에 할당된 포트로 통신하고 HTTP/2를 사용하도록 업그레이드하거나 초기 연결을 닫지 않고 HTTP/1.1로 계속할 수 있습니다).
지지하다
ALPN은 다음 라이브러리에서 지원됩니다.
- 버전 3.2.0 이후 GnuTLS는 2013년 5월에[1] 출시
- MatrixSSL 버전 3.7.1 이후 2014년 12월[2] 출시
- 2014년[3] 4월에 출시된 버전 3.15.5 이후의 네트워크 보안 서비스
- 2015년 1월[4] 버전 1.0.2 이후 OpenSSL 출시
- LibreSSL[5] 버전 2.1.3 이후 2015년 1월 출시
- 2014년 4월에[6] 출시된 버전 1.3.6 이후 mbed TLS(이전의 PolarSSL)
- 2015년 6월 최초 공개 이후 s2n.
- 2015년 10월에[7] 출시된 버전 3.7.0 이후 wolfSSL(구 CyaSSL)
- 버전 1.4가 2014년[8] 12월에 출시된 이후 표준 라이브러리 암호화/tls 패키지로 이동
- JDK [9]9가 2017년 9월에 출시된 이후 JSE가[10] 2020년 4월에 출시된 JDK 8로 역보도됨
- Windows 8.1 및 Windows Server 2012 R2 출시 이후 2013년[11] 10월 18일 이후 Win32 SSPI
역사
다음 프로토콜 네고시에이션
2010년 1월, Google은 Next Protocol Negotiation TLS [12]확장을 설명하는 IETF 표준 초안을 발표했습니다.이 확장 기능은 Google Chrome과 일부 Google 서버 간의 실험적인 SPDY 연결을 협상하는 데 사용되었습니다.SPDY가 진화함에 따라 NPN은 ALPN으로 대체되었습니다.
응용 프로그램 계층 프로토콜 네고시에이션
2014년 7월 11일 ALPN은 다음과 같이 발행되었습니다. RFC7301.ALPN은 Next Protocol Negotiation(NPN) [13]확장을 대체합니다.
TLS False Start는 이전 NPN 확장자를 가진 [14]웹 사이트를 제외하고 Google Chrome 버전 20(2012) 이후 비활성화되었습니다.
예
ALPN은 첫 번째 TLS 핸드쉐이크 'Client Hello'로 전송되는 TLS 확장으로 클라이언트(예: 웹 브라우저)가 지원하는 프로토콜을 나열합니다.
핸드쉐이크 유형: Client Hello (1) 길이: 141 버전:TLS 1.2(0x0303) 랜덤: dd67b5943e5efd0740519f38071008b59efbd68ab314587...Session ID Length: 0 암호 스위트 길이: 10 암호 스위트(5 스위트) 압축 방식 길이: 1 압축 방식(1 메서드) 확장 길이: 90 [기타 확장자 생략]내선번호: application_layer_discription (len=14) 유형: application_layer_discription_notiation (16) 길이:ALPN 확장 길이: 12 ALPN 프로토콜 ALPN 문자열 길이: 2 ALPN 다음 프로토콜: h2 ALPN 문자열 길이: 8 ALPN 다음 프로토콜: http/1.1
웹 서버에서 생성된 'Server Hello'에는 ALPN 확장도 포함되어 HTTP 요청에 사용할 프로토콜을 확인합니다.
핸드쉐이크 유형: Server Hello (2) 길이: 94 버전:TLS 1.2 (0x0303) 랜덤: 44e447964d7e8a7d3b404c47484f02345241dcc9c7e332...세션 ID 길이: 32 세션 ID: 7667476d1d698d0a90caa1d9a449be814b89a0b52f470e2d...암호 스위트: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256(0xc02f) 압축 메서드: null(0) 내선번호 길이: 22 [기타 내선번호 생략]내선번호: application_layer_snegotiation(len=5) 유형: application_16_notiation)ALPN 문자열 길이: 2 ALPN 다음 프로토콜: h2
레퍼런스
- ^ "gnutls 3.2.0". Archived from the original on 2016-01-31. Retrieved 2015-01-26.
- ^ "MatrixSSL - News". 2014-12-04. Archived from the original on 2015-02-14. Retrieved 2015-01-26.
- ^ "NSS 3.15.5 release notes". Mozilla Developer Network. Mozilla. Retrieved 2015-01-26.
- ^ "OpenSSL 1.0.2 release notes". The OpenSSL Project. The OpenSSL Project. 2015-01-22. Retrieved 2015-01-26.
- ^ "LibreSSL 2.1.3 released". 2015-01-22. Retrieved 2015-01-26.
- ^ "Download overview - PolarSSL". 2014-04-11. Retrieved 2015-01-26.
- ^ "wolfSSL Release Change Log". 2015-10-26. Retrieved 2015-09-11.
- ^ "Go 1.4 Release Notes". 2014-12-10. Retrieved 2017-11-28.
- ^ "JEP 244: TLS Application-Layer Protocol Negotiation Extension". 2017-08-07. Retrieved 2018-08-29.
- ^ "Release Note: TLS Application-Layer Protocol Negotiation Extension". 2020-04-30. Retrieved 2020-06-11.
- ^ "What's New in TLS/SSL (Schannel SSP)". Retrieved 2020-03-30.
- ^ Langley, A. (January 20, 2010). "Transport Layer Security (TLS) Next Protocol Negotiation Extension". IETF Datatracker.
- ^ Langley, Adam. "» NPN and ALPN". Retrieved 2 April 2013.
- ^ Langley, Adam. "False Start's Failure (11 Apr 2012)". Retrieved 25 September 2013.
외부 링크
- ALPN 프로토콜 ID의 레지스트리는 IANA에 의해 TLS 확장으로 유지됩니다.
- draft-agl-tls-next protoneg-04(NPN 드래프트)(최종 갱신:2012년 5월)
- RFC 7301 "Transport Layer Security(TLS) Application-Layer Protocol 네고시에이션 확장"