В этой статье слишком много ссылок на первоисточники . ( Апрель 2013 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Согласование протоколов уровня приложений ( ALPN ) - эторасширение безопасности транспортного уровня (TLS), которое позволяет на уровне приложений согласовывать, какой протокол должен выполняться через безопасное соединение, таким образом, чтобы избежать дополнительных циклов передачи данных и который не зависит от уровня приложения. протоколы. Это необходимо для безопасных соединений HTTP / 2 , что улучшает сжатие веб-страниц и снижает их задержку по сравнению с HTTP / 1.x. [ необходимая цитата ] Стандарты ALPN и HTTP / 2 возникли в результате разработок, проделанных Google над ныне отмененным протоколом SPDY .
Поддержка [ править ]
ALPN поддерживается этими библиотеками:
- GnuTLS, начиная с версии 3.2.0, выпущенной в мае 2013 г. [1]
- MatrixSSL, начиная с версии 3.7.1, выпущенной в декабре 2014 г. [2]
- Службы сетевой безопасности, начиная с версии 3.15.5, выпущенной в апреле 2014 г. [3]
- OpenSSL, начиная с версии 1.0.2, выпущенной в январе 2015 г. [4]
- LibreSSL, начиная с версии 2.1.3, выпущенной в январе 2015 г. [5]
- mbed TLS (ранее PolarSSL), начиная с версии 1.3.6, выпущенной в апреле 2014 г. [6]
- SChannel с 8.1 / 2012 R2
- s2n с момента его первоначального публичного выпуска в июне 2015 года.
- wolfSSL (ранее CyaSSL) с версии 3.7.0, выпущенной в октябре 2015 г. [7]
- Go (в пакете стандартной библиотеки crypto / tls), начиная с версии 1.4, выпущенной в декабре 2014 г. [8]
- пикотли [9]
- JSSE на Java с момента выпуска JDK 9 в сентябре 2017 года [10], обратный перенос на JDK 8, выпущенный в апреле 2020 года [11]
- BearSSL с версии 0.3 [12]
- Win32 SSPI, так как Windows 8.1 и Windows Server 2012 R2 были выпущены 18 октября 2013 г. [13]
История [ править ]
11 июля 2014 г. ALPN был опубликован как RFC 7301 . ALPN заменяет NPN [14]
TLS False Start был отключен в Google Chrome начиная с версии 20 (2012), за исключением веб-сайтов с более ранним расширением Next Protocol Negotiation ( NPN ). [15]
Пример [ править ]
ALPN - это расширение TLS, которое отправляется при первоначальном подтверждении TLS «Client Hello», и в нем перечислены протоколы, которые поддерживает клиент (например, веб-браузер):
Тип рукопожатия: Привет клиенту (1) Длина: 141 Версия: TLS 1.2 (0x0303) Случайно: dd67b5943e5efd0740519f38071008b59efbd68ab3114587 ... Длина идентификатора сеанса: 0 Длина набора шифров: 10 Cipher Suites (5 номеров) Методы сжатия Длина: 1 Методы сжатия (1 метод) Длина удлинителей: 90 [другие расширения опущены] Расширение: application_layer_protocol_negotiation (len = 14) Тип: application_layer_protocol_negotiation (16) Длина: 14 Длина удлинителя ALPN: 12 Протокол ALPN Длина строки ALPN: 2 ALPN Следующий протокол: h2 Длина строки ALPN: 8 Протокол ALPN Next: http / 1.1
Полученное в результате 'Server Hello' от веб-сервера также будет содержать расширение ALPN и подтверждает, какой протокол будет использоваться для HTTP-запроса:
Тип рукопожатия: приветствие сервера (2) Длина: 94 Версия: TLS 1.2 (0x0303) Случайно: 44e447964d7e8a7d3b404c4748423f02345241dcc9c7e332 ... Длина идентификатора сеанса: 32 Идентификатор сеанса: 7667476d1d698d0a90caa1d9a449be814b89a0b52f470e2d ... Комплект шифров: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) Метод сжатия: null (0) Длина удлинителей: 22 [другие расширения опущены] Расширение: application_layer_protocol_negotiation (len = 5) Тип: application_layer_protocol_negotiation (16) Длина: 5 Длина удлинителя ALPN: 3 Протокол ALPN Длина строки ALPN: 2 ALPN Следующий протокол: h2
Ссылки [ править ]
- ^ "gnutls 3.2.0" . Архивировано из оригинала на 2016-01-31 . Проверено 26 января 2015 .
- ^ "MatrixSSL - Новости" . 2014-12-04. Архивировано из оригинала на 2015-02-14 . Проверено 26 января 2015 .
- ^ "Примечания к выпуску NSS 3.15.5" . Сеть разработчиков Mozilla . Mozilla . Проверено 26 января 2015 .
- ^ «Примечания к выпуску OpenSSL 1.0.2» . Проект OpenSSL . Проект OpenSSL. 2015-01-22 . Проверено 26 января 2015 .
- ^ "Выпущен LibreSSL 2.1.3" . 2015-01-22 . Проверено 26 января 2015 .
- ^ "Обзор загрузки - PolarSSL" . 2014-04-11 . Проверено 26 января 2015 .
- ^ "Журнал изменений выпуска wolfSSL" . 2015-10-26 . Проверено 11 сентября 2015 .
- ^ «Go 1.4 Release Notes» . 2014-12-10 . Проверено 28 ноября 2017 .
- ^ "Пикотлз" . Github . Проверено 2 августа 2018 .
- ^ «JEP 244: TLS Application-Layer Protocol Negotiation Extension» . 2017-08-07 . Проверено 29 августа 2018 .
- ^ «Примечание к выпуску: расширение согласования протокола уровня приложений TLS» . 2020-04-30 . Проверено 11 июня 2020 .
- ^ "BearSSL - Список изменений" . Проверено 8 сентября 2010 .
- ^ «Что нового в TLS / SSL (Schannel SSP)» . Проверено 30 марта 2020 .
- ^ Лэнгли, Адам. «» НПН и АЛПН » . Проверено 2 апреля 2013 года .
- ^ Лэнгли, Адам. «Провал фальстарта (11 апреля 2012 г.)» . Проверено 25 сентября 2013 года .
Внешние ссылки [ править ]
- Реестр идентификаторов протоколов ALPN поддерживается IANA как расширение TLS.
- draft-agl-tls-nextprotoneg-04 (черновик NPN) (последнее обновление: май 2012 г.)
- RFC 7301 «Расширение согласования протокола прикладного уровня безопасности транспортного уровня (TLS)»