Как реализовать HTTP2 в Tomcat? — Information Security Squad

Как реализовать HTTP2 в Tomcat?

Полная поддержка HTTP2 добавлена в последнюю версию Tomcat 9.x. HTTP / 2 работает быстрее, намного быстрее, чем HTTP / 1.1.

Если вы напрямую доставляете контент в браузер (без прохождения через веб-сервер) из Tomcat, то реализация HTTP / 2 может значительно сократить время загрузки приложения и в целом повысить производительность.

Рекомендуется протестировать его в непроизводственной среде, чтобы убедиться, что приложение работает должным образом.

Прочтите это, если вы хотите включить веб-сервер, такой как Apache или Nginx.

Как включить HTTP / 2 в Nginx

Предпосылка

Tomcat должен быть защищен сертификатом SSL / TLS перед внедрением HTTP2.

Если вам нужна помощь с внедрением, ознакомьтесь с этим руководством.

Реализация HTTP / 2 на Tomcat

Примечание. Перед изменением сделайте резервную копию файлов конфигурации, чтобы вы могли восстановить их, если что-то пойдет не так.

  • Войдите в Tomcat Server и перейдите в папку установки
  • Перейти в папку conf
  • Измените файл server.xml, используя vi или ваш любимый редактор
  • Добавьте следующее в коннектор SSL
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />

В целом, это должно выглядеть так:

<Connector port="443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/key.pem"
                         certificateFile="conf/cert.pem"
                         certificateChainFile="conf/chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>

Выше приведена моя лабораторная конфигурация, поэтому, если вы копируете ее, не забудьте настроить конфигурацию в соответствии с требованиями вашей среды, особенно с портом, если используется пользовательский и путь к сертификату.

Перезапустите экземпляр Tomcat, перейдя в папку bin и выполнив следующие скрипты:

./shutdown.sh
./startup.sh

Проверьте журнал catalina.out, и вы должны увидеть следующее подтверждение, настроенное для поддержки h2

24-Feb-2019 19:43:47.559 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-apr-443"] connector has been configured to support negotiation to [h2] via ALPN

Это означает, что Tomcat готов обслуживать запросы по протоколу HTTP2.

Тестирование

Как узнать, работает ли он так, как ожидалось?

Есть несколько способов проверить это.

Использование Chrome

Полезно для тестирования интранет-приложений.

  • Запустите Google Chrome
  • Откройте Инструменты разработчика, нажав F12
  • Перейдите на вкладку сети
  • Откройте приложение Tomcat и обратите внимание на столбец «Protocol».

И, как вы можете видеть, запросы были обработаны с использованием h2.

Использование журналов

Посмотрите файл access.log и просмотрите входящие запросы.

xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET / HTTP/2.0" 200 11468
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /tomcat.css HTTP/2.0" 200 5931
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /tomcat.png HTTP/2.0" 200 5103
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /bg-button.png HTTP/2.0" 200 713
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /bg-upper.png HTTP/2.0" 200 3103
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /bg-nav.png HTTP/2.0" 200 1401
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /asf-logo-wide.svg HTTP/2.0" 200 27530
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /bg-middle.png HTTP/2.0" 200 1918
xx.xxx.xxx.xxx - - [24/Feb/2019:20:59:23 +0000] "GET /favicon.ico HTTP/2.0" 200 21630

Видите ли вы как HTTP / 2.0 классифицируется в каждом запросе?

Использование интернет-инструментов

Если URL-адрес вашего приложения Tomcat доступен в Интернете, вы можете проверить следующие инструменты.

Заключение

Реализация H2 на Tomcat проста.

Я настоятельно рекомендую протестировать ваше приложение после его реализации, чтобы убедиться в отсутствии побочных эффектов.

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40