shake1
Хранитель порядка
- Регистрация
- 16 Янв 2013
- Сообщения
- 536
- Реакции
- 608
В поисках HTTP/2.
В Chrome 51 прекращена поддержка TLS-расширения NPN, развиваемого в паре с SPDY, на смену которому вместе с HTTP/2 пришло TLS-расширение ALPN. Большая часть сайтов, поддерживающих HTTP/2, работает под управлением nginx и LiteSpeed, в которых применяется реализация TLS из OpenSSL.
Проблема заключается в том, что поддержка ALPN появилась только в OpenSSL 1.0.2, который ещё почти не используется в популярных серверных дистрибутивах Linux. В частности, OpenSSL 1.0.2 присутствует только в Ubuntu 16.04, а в CentOS/RHEL 6.x/7.x, Debian 7.x/8.x и Ubuntu 14.04 применяется OpenSSL 1.0.1, который поддерживает только NPN. В качестве возможных решений проблемы предлагается сменить дистрибутив, самостоятельно пересобрать nginx с новым выпуском OpenSSL или запустить nginx в контейнере с Ubuntu 16.04 LTS. В противном случае, пользователи Chrome 51 будут ограничены использованием HTTP/1.1.
В Chrome 51 прекращена поддержка TLS-расширения NPN, развиваемого в паре с SPDY, на смену которому вместе с HTTP/2 пришло TLS-расширение ALPN. Большая часть сайтов, поддерживающих HTTP/2, работает под управлением nginx и LiteSpeed, в которых применяется реализация TLS из OpenSSL.
Проблема заключается в том, что поддержка ALPN появилась только в OpenSSL 1.0.2, который ещё почти не используется в популярных серверных дистрибутивах Linux. В частности, OpenSSL 1.0.2 присутствует только в Ubuntu 16.04, а в CentOS/RHEL 6.x/7.x, Debian 7.x/8.x и Ubuntu 14.04 применяется OpenSSL 1.0.1, который поддерживает только NPN. В качестве возможных решений проблемы предлагается сменить дистрибутив, самостоятельно пересобрать nginx с новым выпуском OpenSSL или запустить nginx в контейнере с Ubuntu 16.04 LTS. В противном случае, пользователи Chrome 51 будут ограничены использованием HTTP/1.1.
Для реального домена и локальной разработки разница в получении ssl сертификата.
Создать папку, в которой будут храниться ключи шифрования и перейти в нее:
Получаем сертификат:
Например так: Для просмотра ссылки Войдиили Зарегистрируйся
Для локальной разработки - сгенерировать самоподписанный сертификат:
Правим конфиг, - на основе из мануала из этой темы:
Для просмотра ссылки Войдиили Зарегистрируйся
Смотрим есть ли ошибки:
Перезапускаем:
Можно проверить.
Если устанавливался подписанный сертификат, то все будет нормально - https, замочек итд.
Для локальной разработки, при установке самоподписанного сертификата будет предупреждение - ваше подключение не защищено, итд.
Для просмотра ссылки Войдиили Зарегистрируйся
Можно нажать "я не боюсь, пустите", сайт откроется, но замок будет перечеркнут, итд - не хорошо.
Делаем самоподписаный сертификат доверенным.
Скопировать установленный сертификат domain.crt на локальную машину.
Открыть хром, настройки, дополнительно, настроить сертификаты.
Вкладка "доверенные корневые центры сертификации", импорт, выбрать domain.crt, со всем согласиться, перезагрузить хром.
----------------------
Пересобрать Nginx с поддержкой OpenSSL 1.0.2j
На предпоследней команде будет долго собирать, это нормально.
Создать папку, в которой будут храниться ключи шифрования и перейти в нее:
PHP:
mkdir /etc/nginx/ssl && cd /etc/nginx/ssl
Например так: Для просмотра ссылки Войди
Для локальной разработки - сгенерировать самоподписанный сертификат:
PHP:
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/nginx/ssl/domain.key -out /etc/nginx/ssl/domain.crt
Для просмотра ссылки Войди
Смотрим есть ли ошибки:
PHP:
nginx -t
PHP:
systemctl restart nginx
Если устанавливался подписанный сертификат, то все будет нормально - https, замочек итд.
Для локальной разработки, при установке самоподписанного сертификата будет предупреждение - ваше подключение не защищено, итд.
Для просмотра ссылки Войди
Можно нажать "я не боюсь, пустите", сайт откроется, но замок будет перечеркнут, итд - не хорошо.
Делаем самоподписаный сертификат доверенным.
Скопировать установленный сертификат domain.crt на локальную машину.
Открыть хром, настройки, дополнительно, настроить сертификаты.
Вкладка "доверенные корневые центры сертификации", импорт, выбрать domain.crt, со всем согласиться, перезагрузить хром.
----------------------
Пересобрать Nginx с поддержкой OpenSSL 1.0.2j
PHP:
yum -y groupinstall 'Development Tools'
yum -y install wget openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel
OPENSSL="openssl-1.0.2j"
NGINX="nginx-1.11.4-1"
mkdir -p /opt/lib
wget https://www.openssl.org/source/$OPENSSL.tar.gz -O /opt/lib/$OPENSSL.tar.gz
tar -zxvf /opt/lib/$OPENSSL.tar.gz -C /opt/lib
rpm -ivh http://nginx.org/packages/mainline/centos/7/SRPMS/$NGINX.el7.ngx.src.rpm
sed -i "s|--with-http_ssl_module|--with-http_ssl_module --with-openssl=/opt/lib/$OPENSSL|g" /root/rpmbuild/SPECS/nginx.spec
rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec
rpm -Uvh /root/rpmbuild/RPMS/x86_64/$NGINX.el7.centos.ngx.x86_64.rpm
Последнее редактирование: