Debian jessie nginx с openssl 1.0.2 для использования ALPN вместо NPN

Я запускаю debian jessie на своем сервере и недавно перешел на новый веб-сервер nginx с поддержкой http / 2 (nginx 1.10). На сегодняшний день он отлично работает, и веб-сервер доставляет контент по протоколу http2.

Я читал, что хром отказывается от поддержки NPN и разрешает ALPN только после 15.5.2016. ALPN - это расширение, которое требует установленного openssl 1.0.2, но на debian jessie есть только openssl 1.0.1 (также на backports debian и других репозиториях openssl 1.0.0 отсутствует. 2 версия для этого debian).

И есть проблема - я обновился с SPDY до http2, и через несколько дней мне придется отключить http2 и я не смогу использовать SPDY, потому что эта версия nignx имеет только http2. Я также читал, что эта версия debian застрянет с openssl 1.0.1, и только debian stretch будет иметь openssl 1.0.2. Но до даты выпуска почти год, и поддержка Chrome скоро прекратится, поэтому я не хочу терять преимущества протокола http2.

Есть ли какое-нибудь решение, как установить openssl 1.0.2 в этой системе без сборки собственная сборка (плохое обслуживание) или ждете, когда она появится в репозитории backports? Мне также не нужны две версии openssl в моей системе, если одна из них должна быть связана и обслуживаться вручную.

Спасибо за любую помощь.

14
задан 13 July 2016 в 16:40
6 ответов

2016/08/08 шинэчлэлт: nginx in jessie-backports (хувилбар 1.9.10-1 ~ bpo8 + 3 [1147116) ] нь openssl> = 1.0.2 ~ -н эсрэг бүтээгдсэн. jessie ажиллаж байгаа бол одоо ажиллах ALPN . jessie-backports [-оос багцуудыг шаарддаг. 1147124], сунгах -аас багц татаж гаргах шаардлагагүй болсон.

-

Жинхэнэ хариулт: За, тайлбарын дагуу миний хариултыг энд оруулав: Миний бодлоор өнөөдрийн байдлаар 2016/05/09 оны байдлаар шийдэх тийм олон арга байхгүй байна. Үндсэндээ > = openssl 1.0.2 ~ -ийн эсрэг хөрвүүлсэн орчин үеийн nginx -г системдээ нэвтрүүлэхийн тулд ямар нэгэн байдлаар оролдох хэрэгтэй.

Одоогоор миний харж байгаа цорын ганц хоёр сонголт байна: Та өөрөө хийхийг хүсэхгүй байгаа зүйлээ өөрөө хөрвүүлдэг, энэ нь нэлээд ойлгомжтой, эсвэл орчин үеийн багцуудыг Debian stretch дотроос татаж авдаг. . Үүнд та тогтвортой орчныг өөр орчинтой хольж байгаа тул зарим эрсдлүүд багтах болно, гэхдээ миний бодлоор эдгээр эрсдэлүүд нэлээд бага байна , учир нь та Debian ашиглаж байна.

Тэгэхээр , одоо явж үзье:

  • Debian stretch репозиторыг зохимжтой эх сурвалжууд дээрээ нэмээрэй . Үүний тулд /etc/apt/sources.list -г бүү ашиглаарай, харин үүнийг цэвэр байлгахын тулд /etc/apt/sources.list.d/ дотор тусгай файл ашиглана уу, Би өөрөө stretch.list ашиглаж байна.

    Эдгээр мөрүүдийг дотор нь байрлуул:

     deb http://httpredir.debian.org/debian/ stretch main хувьцаа үнэгүй
    deb-src http://httpredir.debian.org/debian/ сунгах үндсэн хувь нэмэр үнэгүй
    
    deb http://security.debian.org/ stretch / updates үндсэн хувь нэмэр үнэгүй
    deb-src http://security.debian.org/ stretch / updates үндсэн хувь нэмэр үнэгүй
    
    Өмнө нь "дэгдэмхий" гэж нэрлэдэг # сунгах-шинэчлэлт
    deb http://httpredir.debian.org/debian/ stretch-updates үндсэн хувь нэмэр үнэгүй
    deb-src http://httpredir.debian.org/debian/ stretch-updates үндсэн хувь нэмэр үнэгүй
     
  • тохируулах -г тохируулж, зөвхөн зааж өгч буй Debian stretch дотроос багцыг татаж байгаа эсэхийг шалгаарай. Үүнийг ашиглах файл нь / etc / apt / preferences , дотор нь, put:

     Багц: *
    Зүү: суллах n = jessie
    Тэргүүлэх ач холбогдол: 900
    
    Багц: *
    Зүү: суллах a = jessie-backports
    Тэргүүлэх ач холбогдол: 500
    
    Багц: *
    Зүү: суллах n = сунгах
    Тэргүүлэх ач холбогдол: 100
     

    (Та хүрээлэн буй орчиндоо нийцүүлэхийн тулд багц, тэргүүлэх чиглэлүүдийг өөрчлөх шаардлагатай байж магадгүй юм.)

  • Run apt-get update (via sudo / as root . ]) багц кэшийг шинэчлэх.

  • nginx -ыг -ээс Debian stretch -с суулгана уу: apt-get install -t stretch nginx (үүнийг -р дамжуулан хийгээрэй. sudo / as root ). Ашиг!

  • Миний тайлбар (ууд) -д дурдсанчлан учрах эрсдлийг бууруулахын тулд та chroot эсвэл LXC гэх мэт савтай уусмал ашиглаж болно. Хэрэв та chroot замаар явахыг хүсвэл тэнд сүлжээний интерфэйсийг тохируулах хэрэгтэй: Үүнийг хийхийн тулд энэ блогт жишээг үзээрэй. сүлжээний нэрийн орон зайд .

  • Энэ нь тусална гэж найдаж байна; Хэрэв танд илүү их асуулт байгаа бол надтай холбоо бариарай. Санал хүсэлтэд талархаж байгаа бөгөөд энэ нь хэрхэн явагдахыг сонирхож байна.

16
ответ дан 2 December 2019 в 21:05

Другой способ - установить OpenSSL 1.0.2 из jessie-backports и использовать сборки Ubuntu 16.04 LTS из собственного репозитория nginx. Таким образом, вы, по крайней мере, используете пакет OpenSSL, созданный для Jessie.

Добавьте в /etc/apt/sources.list :

# jessie-backports, from stretch-level but with no dependencies
deb http://httpredir.debian.org/debian/ jessie-backports main contrib non-free
deb-src http://httpredir.debian.org/debian/ jessie-backports main contrib non-free

# Nginx repository - use Ubuntu 16.04 LTS Xenial to get packages compiled with OpenSSL 1.0.2
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx

Затем запустите:

apt-get update
apt-get install -t jessie-backports openssl
apt-get install nginx

Это, очевидно, вводит вас в официально неподдерживаемая конфигурация, но, возможно, это лучше, чем вообще не иметь пакета - и у меня это сработало. Кроме того, использование репозитория nginx означает получение свежих обновлений.

11
ответ дан 2 December 2019 в 21:05

Другой метод - использовать jessie-backports, а затем легко перестроить nginx

добавить в /etc/apt/sources.list backports

deb http://ftp.debian.org/debian jessie-backports main

, а затем запустить от имени пользователя root

apt-get update
apt-get install -t jessie-backports openssl

а затем пересоберите nginx. Следуйте инструкциям на https://wiki.debian.org/BuildingAPackage

0
ответ дан 2 December 2019 в 21:05

Для меня самым простым способом исправить это было использование другой образ Nginx Docker, см. официальную сборку Nginx на Docker Hub . В сборке Docker Nginx по умолчанию используется Debian Jessie, поэтому проблема не решена, но они также предлагают альтернативную сборку на основе Alpine Linux . В его последних сборках действительно используется OpenSSL 1.0.2!

Таким образом, это решение предполагает, что вы установили Docker и нормально запускаете Nginx на Alpine Linux вместо Debian Jessie .

Чтобы запустить контейнер Nginx:

sudo docker run --name nginx-container -p 80:80 -p 443:443 -v /path/to/your/nginx/directory/:/etc/nginx/ /path/to/your/files/to/serve/:/usr/share/nginx/html/ -d nginx:1.11-alpine

Краткое объяснение для начала работы с Docker:

  • docker run : загружает образ Docker (в данном случае nginx: 1.11-alpine ), если у вас его еще нет, и запускает контейнер Docker на основе этого образа
  • - name nginx-container : дает контейнеру Docker имя (вы можете просмотреть все запущенные контейнеры Docker, используя sudo docker ps или используйте sudo docker ps -a для просмотра остановленных контейнеров)
  • -p 80:80 -p 443: 443 : связывает порты 80 и 443 на вашем хост-компьютер к портам 80 и 443 соответственно в контейнере Docker
  • -v / path / to / your / nginx / directory /: / etc / nginx / : монтирует каталог в вашей хост-системе, который содержит ваш Nginx co nfiguration в каталог / etc / nginx / в контейнере Docker
  • / путь / к / вашим / файлам / к / serve /: / usr / share / nginx / html / : mounts каталог в вашей хост-системе, содержащий файлы, которые должен обслуживать Nginx
  • -d :запускает контейнер в фоновом режиме (вы можете остановить контейнер, используя docker stop nginx-container )
  • nginx: 1.11-alpine : используйте этот образ для запуска вашего контейнера из ( здесь перечислены официальные образы Nginx Docker )

Также полезно:

  • используйте sudo docker exec nginx-container для запуска команды в контейнере, например sudo docker exec nginx-container nginx -s reload для перезагрузки Nginx после изменения файлов конфигурации в хост-системе
  • Или используйте sudo docker exec -it nginx-container bash , чтобы ввести bash в контейнере, чтобы вы могли работать там напрямую (не рекомендуется, но иногда полезно)
0
ответ дан 2 December 2019 в 21:05

Альтернативный способ - использовать вместо этого BoringSSL, который не вредит окружению OpenSSL. Вот подробности, на которые можно сослаться, https://www.admon.org/hardwares/enable-http2-support-for-nginx-on-debian-jessie

0
ответ дан 2 December 2019 в 21:05

В моей ситуации я использовал репозиторий Dotdeb apt. Инструкции этого веб-сайта дают возможность добавить репозиторий, который позволяет вам установить Nginx с «полной» поддержкой HTTP2. Текущая версия - 1.14, что на один минор отстает от последней версии, так что вы не сильно отстанете (текущий backport - 1.10).

0
ответ дан 2 December 2019 в 21:05

Теги

Похожие вопросы