Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Согласование протоколов уровня приложений ( 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

Ссылки [ править ]

  1. ^ "gnutls 3.2.0" . Архивировано из оригинала на 2016-01-31 . Проверено 26 января 2015 .
  2. ^ "MatrixSSL - Новости" . 2014-12-04. Архивировано из оригинала на 2015-02-14 . Проверено 26 января 2015 .
  3. ^ "Примечания к выпуску NSS 3.15.5" . Сеть разработчиков Mozilla . Mozilla . Проверено 26 января 2015 .
  4. ^ «Примечания к выпуску OpenSSL 1.0.2» . Проект OpenSSL . Проект OpenSSL. 2015-01-22 . Проверено 26 января 2015 .
  5. ^ "Выпущен LibreSSL 2.1.3" . 2015-01-22 . Проверено 26 января 2015 .
  6. ^ "Обзор загрузки - PolarSSL" . 2014-04-11 . Проверено 26 января 2015 .
  7. ^ "Журнал изменений выпуска wolfSSL" . 2015-10-26 . Проверено 11 сентября 2015 .
  8. ^ «Go 1.4 Release Notes» . 2014-12-10 . Проверено 28 ноября 2017 .
  9. ^ "Пикотлз" . Github . Проверено 2 августа 2018 .
  10. ^ «JEP 244: TLS Application-Layer Protocol Negotiation Extension» . 2017-08-07 . Проверено 29 августа 2018 .
  11. ^ «Примечание к выпуску: расширение согласования протокола уровня приложений TLS» . 2020-04-30 . Проверено 11 июня 2020 .
  12. ^ "BearSSL - Список изменений" . Проверено 8 сентября 2010 .
  13. ^ «Что нового в TLS / SSL (Schannel SSP)» . Проверено 30 марта 2020 .
  14. ^ Лэнгли, Адам. «» НПН и АЛПН » . Проверено 2 апреля 2013 года .
  15. ^ Лэнгли, Адам. «Провал фальстарта (11 апреля 2012 г.)» . Проверено 25 сентября 2013 года .

Внешние ссылки [ править ]

  • Реестр идентификаторов протоколов ALPN поддерживается IANA как расширение TLS.
  • draft-agl-tls-nextprotoneg-04 (черновик NPN) (последнее обновление: май 2012 г.)
  • RFC  7301 «Расширение согласования протокола прикладного уровня безопасности транспортного уровня (TLS)»