Согласование протокола уровня приложений - Application-Layer Protocol Negotiation
Эта статья слишком полагается на Рекомендации к основные источники.апрель 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]
- Идти (в пакете стандартной библиотеки crypto / tls) с версии 1.4, выпущенной в декабре 2014 г.[8]
- пикотли[9]
- JSSE в Ява поскольку 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 был отключен в Гугл Хром начиная с версии 20 (2012 г.), за исключением веб-сайтов с более ранней Следующее согласование протокола (NPN) расширение.[15]
Пример
ALPN - это расширение TLS, которое отправляется при первоначальном Рукопожатие TLS 'Client Hello', в котором перечислены протоколы, которые поддерживает клиент (например, веб-браузер):
Тип подтверждения: Client Hello (1) Длина: 141 Версия: TLS 1.2 (0x0303) Случайное: dd67b5943e5efd0740519f38071008b59efbd68ab3114587 ... Длина идентификатора сеанса: 0 Длина набора шифров: 10 наборов шифров (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 Следующий протокол: http / 1.1
Полученное в результате 'Server Hello' от веб-сервера также будет содержать расширение ALPN и подтверждает, какой протокол будет использоваться для HTTP-запроса:
Рукопожатие Тип: Сервер Hello (2) Длина: 94 Версия: TLS 1.2 (0x0303) Случайные: 44e447964d7e8a7d3b404c4748423f02345241dcc9c7e332 ... Session ID Длина: 32 Session ID: 7667476d1d698d0a90caa1d9a449be814b89a0b52f470e2d ... Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) Метод сжатия: нулевой (0) Длина расширений: 22 [другие расширения опущены] Расширение: application_layer_protocol_negotiation (len = 5) Тип: application_layer_protocol_negotiation (16) Длина: 5 Длина расширения ALPN: 3 Протокол ALPN Длина строки ALPN: 2 Следующий протокол ALPN: h2
Рекомендации
- ^ "гнутлс 3.2.0". Архивировано из оригинал на 2016-01-31. Получено 2015-01-26.
- ^ "MatrixSSL - Новости". 2014-12-04. Архивировано из оригинал на 2015-02-14. Получено 2015-01-26.
- ^ «Примечания к выпуску NSS 3.15.5». Сеть разработчиков Mozilla. Mozilla. Получено 2015-01-26.
- ^ «Примечания к выпуску OpenSSL 1.0.2». Проект OpenSSL. Проект OpenSSL. 2015-01-22. Получено 2015-01-26.
- ^ «Выпущен LibreSSL 2.1.3». 2015-01-22. Получено 2015-01-26.
- ^ «Обзор загрузки - PolarSSL». 2014-04-11. Получено 2015-01-26.
- ^ "Журнал изменений выпуска wolfSSL". 2015-10-26. Получено 2015-09-11.
- ^ «Примечания к выпуску Go 1.4». 2014-12-10. Получено 2017-11-28.
- ^ "Пикотлз". Github. Получено 2 августа 2018.
- ^ «JEP 244: Расширение согласования протокола уровня приложений TLS». 2017-08-07. Получено 2018-08-29.
- ^ «Примечание к выпуску: расширение согласования протокола уровня приложений TLS». 2020-04-30. Получено 2020-06-11.
- ^ "BearSSL - История изменений". Получено 2010-09-08.
- ^ «Что нового в TLS / SSL (Schannel SSP)». Получено 2020-03-30.
- ^ Лэнгли, Адам. «» НПН и АЛПН ». Получено 2 апреля 2013.
- ^ Лэнгли, Адам. «Провал фальстарта (11 апреля 2012 г.)». Получено 25 сентября 2013.
внешняя ссылка
- Реестр идентификаторов протоколов ALPN поддерживается IANA как расширение TLS.
- draft-agl-tls-nextprotoneg-04 (проект NPN) (последнее обновление: май 2012 г.)
- RFC 7301 «Расширение согласования протокола прикладного уровня безопасности транспортного уровня (TLS)»
Этот компьютерная сеть статья - это заглушка. Вы можете помочь Википедии расширяя это. |