Перекомпилируйте PHP с OpenSSL на CentOS
Я обновил версию OpenSSL до 1.02l от 1.0.1e и версия PHP от PHP 5.6 в PHP 7.1.8 (PHP устанавливается с использованием yum)
Проблема в том, что PHP по-прежнему определяет версию openssl для 1.0.1e тогда как я хочу обновить его до последней установленной версии openssl, т.е. 1.0.2l
Я хочу знать, какие у меня есть варианты, как мне сказать PHP использовать последнюю установленную версию openssl?
Мой вывод говорит мне, что единственный способ сделать это — перекомпилировать PHP? (будет признателен, если кто-то может сказать мне, если есть другой способ) Если единственный способ — перекомпиляция, мне нужна помощь, как это сделать? Какие шаги включены. Насколько я понимаю, вот как я думаю, я должен сделать.
Я что-то здесь упускаю?
** ОБНОВИТЬ **
Вот список расширений php, установленных с помощью yum
Теперь я хочу настроить PHP для использования этих расширений, так что пока у меня есть следующие
Я просто хочу знать сейчас, если мне нужно включить какое-либо расширение из списка выше, я использую —enable или —with? например, как мне включить php-xml. Я использую только —enable-php-xml?
Решение
Да, вам нужно скачать dev-пакет openssl (исходники / заголовки), исходники PHP и настроить его с помощью следующих ключей:
НОТА: Вам нужно будет скачать dev-пакеты каждого модуля, которым вы являетесь
собираюсь скомпилировать — это занимает заметное количество времени, планируем соответственно.
ЗАМЕТКА 2: Имейте в виду, что все модули, которые вы собираетесь скомпилировать в
Ваша собственная сборка PHP будет доступна через его функции (например,
манипуляции с изображениями, запросы https / curl и т. д.), поэтому
Рекомендуется использовать только стабильные и проверенные версии модулей, чтобы не
добавьте новую уязвимость на ваш сайт.
** ОБНОВИТЬ **
[DIR] могут быть обнаружены автоматически, но я столкнулся с множеством ситуаций, когда они отличаются от того, что ожидает PHP.
—enable-gd-native-ttf устарела начиная с PHP 5.5.0, удалена в PHP 7.2.0.
Другие решения
Если вы установили последнюю версию OpenSSL, вы можете перейти к исходному коду PHP и настроить сборку перед компиляцией PHP.
Создание SSL-сертификата на Apache в CentOS 7
TLS (или Transport Layer Security, протокол безопасности транспортного уровня) и предшествующий ему SSL (Secure Sockets Layer) – это сетевые протоколы, которые шифруют и тем самым защищают трафик. Благодаря этой технологии процесс обмена данными между клиентом и сервером надежно защищен от перехвата посторонним абонентом. Кроме того, система сертификации помогает пользователям проверить подлинность сайта.
В данном руководстве речь пойдет о создании самоподписанного SSL-сертификата для веб-сервера Apache на виртуальном выделенном сервере CentOS 7. Самостоятельно подписанный сертификат не может подтвердить подлинность сайта, поскольку он не заверен центром сертификации (ЦС), которому может доверять браузер; но он будет шифровать взаимодействие между сервером и посетителями сайта, и тем самым повысит безопасность соединения.
Требования
Для выполнения данного руководства нужен предварительно настроенный сервер CentOS 7 и не-рутовая учетная запись пользователя с расширенными привилегиями sudo. Подробнее об этом можно прочесть в руководстве «Начальная настройка сервера CentOS 7».
Кроме того, нужно предварительно установить Apache; для установки веб-сервера можно использовать стандартный менеджер пакетов yum:
sudo yum install httpd
Затем нужно запустить Apache в качестве сервиса CentOS, чтобы автоматизировать запуск Apache после перезагрузки:
sudo systemctl enable httpd.service
1: Установка mod_ssl
Чтобы создать самоподписанный сертификат, для начала нужно установить mod_ssl, модуль Apache для поддержки шифрования SSL. Для этого используйте команду yum:
sudo yum install mod_ssl
После установки модуль включится автоматически, после чего Apache сможет использовать сертификаты SSL. Осталось только перезапустить Apache, чтобы mod_ssl был готов к использованию.
2: Создание SSL-сертификата
Теперь веб-сервер подготовлен к шифрованию данных. Приступайте к созданию нового SSL-сертификата. Сертификат будет содержать некоторую базовую информацию о сайте; также к нему прилагается key-файл, благодаря которому сервер может обрабатывать зашифрованные данные.
Сначала нужно создать новый каталог, в котором будет храниться ключ сервера (key-файл) и сам сертификат:
sudo mkdir /etc/httpd/ssl
При помощи команды openssl создайте ключ и сертификат SSL:
После ввода запроса будет открыта командная строка, в которой можно ввести информацию о сайте. Но сперва рассмотрим подробнее вышеприведенную команду:
Теперь заполните форму соответствующими данными. Самым важным полем в форме является Common Name, в котором нужно указать доменное имя сайта или внешний IP-адрес сервера. Форма имеет такой вид:
Country Name (2 letter code) [XX]:US
State or Province Name (full name) []:Example
Locality Name (eg, city) [Default City]:Example
Organization Name (eg, company) [Default Company Ltd]:Example Inc
Organizational Unit Name (eg, section) []:Example Dept
Common Name (eg, your name or your server’s hostname) []:example.com
Email Address []:webmaster@example.com
3: Установка SSL-сертификата
Итак, все необходимые компоненты готовы. Теперь нужно настроить виртуальный хост для отображения нового сертификата.
Откройте конфигурационный файл Apache для SSL в текстовом редакторе с привилегиями root:
sudo nano /etc/httpd/conf.d/ssl.conf
Сначала раскомментируйте строку DocumentRoot и отредактируйте адрес в кавычках, указав свой каталог document root. По умолчанию это /var/www/html; если вы используете другой root-каталог веб-сервера, укажите в этой строке правильный адрес.
Затем раскомментируйте строку ServerName (вместо www.example.com укажите свое доменное имя или IP, в зависимости от того, что было указано в поле Common Name).
Найдите строки SSLCertificateFile и SSLCertificateKeyFile и укажите в них адрес ключа и сертификата – каталог /etc/httpd/ssl:
SSLCertificateFile /etc/httpd/ssl/apache.crt
SSLCertificateKeyFile /etc/httpd/ssl/apache.key
Внеся все изменения, сохраните и закройте файл.
4: Активация сертификата SSL
На данный момент SSL-сертификат и веб-сервер готовы. Чтобы применить все изменения и запустить шифрование SSL, перезапустите сервер Apache, это обновит его конфигурации:
sudo apachectl restart
Чтобы увидеть новый сертификат в действии, посетите в браузере доменное имя или IP в таком формате:
Скорее всего, браузер выдаст предупреждение вроде «site’s security certificate is not trusted». Это значит, что браузер не может доверять сертификату, который не был заверен авторитетным центром сертификации. Это вполне ожидаемая реакция.
Чтобы продолжить, нужно добавить исключение в проверку подлинности браузера.
Заключение
Теперь сервер Apache поддерживает запросы HTTP и HTTPS. Это обезопасит взаимодействие с клиентами и не позволит посторонним читать ваш трафик.
Recompile PHP with OpenSSL on CentOS
I have upgraded openssl version to 1.02l from 1.0.1e and PHP version from PHP 5.6 to PHP 7.1.8 (PHP is installed using yum)
The problem is, PHP still detects openssl version to 1.0.1e whereas I want it to be updated to latest openssl version installed i.e 1.0.2l
I want to know what are my options here, how do I go about telling PHP to use the latest installed openssl version?
My finding tells me that the only way to do it is by recompiling PHP? (will appreciate if someone can tell me if there is other way) If the only way is by recompiling, I need help on how to go about it? what are the steps involved. From my understanding, here is how I think I have to do.
Am I missing anything here?
** UPDATE **
Here are the list of php extensions installed using yum
I now want to configure PHP to use this extensions, so far I have comeup with following
2 Answers 2
Yes, you need to download dev package of openssl (sources/headers), sources of PHP and configure it with following keys:
NOTE 2: Keep in mind that all modules you are going to compile into your own build of PHP will be accessible through its functions (like image manipulation, https/curl requests etc), so it is highly recommended to use only stable and proven versions of modules not to add a new vulnerability to your web-site.
** UPDATE **
[DIR]’s can be discovered automatically, but I faced a lot of situations when they are different from what PHP expects.
—enable-gd-native-ttf is deprecated starting PHP 5.5.0, removed in PHP 7.2.0.
Установка и настройка mod_ssl в Apache на CentOS 5,6, получение SSL сертификата.
Администраторы сетей бывают разные и вполне возможно, что за некоторыми своими сетевыми клиентами может вестись слежка с помощью сниферов, да и собственно не только за некоторыми, а за всеми клиентами сразу могут следить и вероятно уже следят:
СБУ хочет, чтобы провайдеры хранили данные о пользователях 90 дней
Украинский закон «О телекоммуникациях» не позволяет бороться с киберпреступностью в полной мере. Такое мнение на съезде Интернет ассоциации Украины высказал руководитель подразделения СБУ Валентин Петров.
Как обычно под предлогом борьбы с преступностью, борьба реально будет вестись с бизнесом и политически неугодными индивидами путём перехвата и дальнейшего анализа их Интернет трафика (корпоративной почты, посещённых сайтов и пр.). Как там у В. Леонтьева: » Каждый хочет иметь и невесту и друга. «
Или к примеру просто админ сети будет местами шутить, так например вычленит из трафика данные административного акаунта от посещаемого тобой сайта, удалит весь контент с сайта, а вместо него напишет АДМИН ЛОХ!:) или что-то в таком духе. В некоторых вопросах АДМИН конечно ЛОХ но, не до такой же степени, чтобы упустить возможность организации безопасного HTTPS (SSL) соединения с веб сервером Apache для администрирования веб ресурса!:)
Установка mod_ssl и openssl
Для организации безопасного HTTPS (SSL) соединения с веб сервером Apache нам потребуется Apache модуль mod_ssl и собственно сам openssl для создания корневого сертификата и сертификата сервера. Проверим наличие в системе mod_ssl и openssl:
Если mod_ssl и openssl не установлен, то устанавливаем:
Самоподписной SSL сертификат сервера Apache
На третьем этапе мы создаём и подписываем себе свой SSL сертификат. Нужно учесть, что созданный ранее RSA-ключ, которым был подписан CSR запрос, является уникальным. Потеряв RSA-ключ, мы сможем сгенерировать новый, но с новым ключом наш сертификат уже будет недействителен. Сохраните RSA-ключ в надежном месте (создайте его резервную копию).
RSA-ключ сервера можно защитить паролем, что обеспечит ему большую защиту, зашифровав его. В случае кражи RSA-ключа никто не сможет ничего им подписать потому, что не знает пароля. С этим же ключом работает наш веб-сервер Apache и поэтому, когда ключ будет защищен паролем, то в настройках SSL виртуального хоста отдельной директивой понадобится указать веб-серверу путь к файлу пароля, который откроет доступ к ключу. Но в нашем случае мы не будем использовать пароль для RSA-ключа.
Сам RSA-ключ является обычным текстовым файлом и содержит в себе примерно такие строки:
Важную роль в этом файле играют первая и последняя строки «——BEGIN RSA PRIVATE KEY——» и «——END RSA PRIVATE KEY——«, где должно быть строго по пять тире. Никогда НЕ исправляйте этот файл в текстовом редакторе вручную.
Теперь обновите конфигурационный файл Apache SSL: vi +/SSLCertificateFile /etc/httpd/conf.d/ssl.conf
Измените полный путь, где хранится новый сертификат: SSLCertificateFile /etc/pki/tls/certs/ca.crt
Установите верный путь к файлу ключа сертификата: SSLCertificateKeyFile /etc/pki/tls/private/ca.key
Проверяем конфиги и перезапускаем сервант:
Потом в httpd.conf или в ssl.conf пишем: SSLPassPhraseDialog exec:/usr/local/etc/rc.d/startssl.pl
Бесплатный, доверенный SSL сертификат сервера Apache
Бесплатный самоподписной SSL сертификат созданный нами ранее подойдёт для нашего персонального сайта, при этом пытаясь посетить сайт на котором организовано безопасное HTTPS (SSL) соединение с самоподписным SSL сертификатом для сервера Apache, пользователь получит в браузер предупреждение о том, что сертификат не является действительным и безопасное HTTPS (SSL) соединение может быть не установлено.
Для избавления от всех этих манипуляций в Сети Интернет можно попытаться раздобыть бесплатный доверенный SSL сертификат для веб сервера. Обычно такие раздачи бесплатных доверенных SSL сертификатов имеют кратковременный характер (выдаются на 30-365 дней) и придуманы для привлечения клиентов. После истечении срока действия SSL сертификата от авторитетного/доверенного поставщика, он ничем не отличается от самоподписанного.
Список доверенных поставщиков бесплатных SSL сертификатов, у которых можно получить бесплатный доверенный SSL сертификат для веб сервера сроком на 30-365 дней:
Купить SSL сертификат будет стоить где-то минимум 60-80 у.е. в год но, вполне можно обойтись самоподписанным сертификатом и дать пользователям своего сайта соответствующие пояснения и детальную инструкцию по его установке.
Настройка брандмауэра iptables
Добавим в брандмауэре iptables разрешающее правило для 443-го порта и сохраним изменения:
SSL (HTTPS) на нескольких виртуальных хостах
mod_ssl не даёт возможности реализовать несколько name based SSL виртуальных хостов на одном IP адресе, точнее, несколько виртуальных SSL хостов на одном IP можно реализовать, но SSL сертификат на все виртуальные хосты будет один, что не есть гуд. При попытке использовать несколько виртуальных SSL хостов на одном IP в /var/log/httpd/error_log всегда будем получать предупреждения:
Эти предупреждения не есть критично, но как упоминалось ранее SSL сертификат на все виртуальные хосты будет один. «Гениальные» предположения типа дополнительно использовать NameVirtualHost myhost.name:443, указывать имя виртуального хоста в секции . приводят к полному беспределу и ошибкам типа:
Для реализации SSL (HTTPS) на одном IP и для нескольких виртуальных хостов одновременно с разными SSL сертификатами нужно использовать такой чудо-модуль как mod_gnutls на библиотеке GnuTLS, который можно применить только для апачей выше версии 2.0.42.
Для компиляции mod_gnutls в системе должны быть установлены пакеты httpd-devel и gnutls-devel, подробную инструкцию по компиляции и установке mod_gnutls можно найти здесь >>>
Заключение
С каждым днём становится всё сложнее сохранить свои конфиденциальные данные, вводятся биометрические паспорта, узакониваются новые системы слежения и сбора данных о личности, в ближайшем будущем и вовсе планируют полностью централизировать тотальный контроль над человеческим стадом вживляя в тела каждого из нас электронные чипы!;(( Такие чипы в некоторых странах уже вживляют, но пока только преступникам для контроля их места расположения, а дальше будет больше.
Как видим В. Леонтьев был прав: » Каждый хочет иметь и невесту и друга. «, а чтобы нас не поимели в сети Интернет мы должны всегда использовать только безопасные HTTPS (SSL) независимо от типа соединения (HTTP, POP, SMTP и т.д.), если есть такая возможность
Ссылки по теме:
Рекомендуемый контент
А тут же ж мог быть рекомендуемый контент от гугла 🙂 Для отображения рекомендуемого контента необходимо в браузере разрешить выполнение JavaScript скриптов, включая скрипты с доменов googlesyndication.com и doubleclick.net
Вы не любите рекламу!? Напрасно!:) На нашем сайте она вовсе ненавязчивая, а потому для нашего сайта можете полностью отключить AdBlock (uBlock/uBlock Origin/NoScript) и прочие блокировщики рекламы! AdBlock/uBlock может препятствовать нормальной работе системы поиска по сайту, отображению рекомендуемого контента и прочих сервисов Google. Рекомендуем полностью отключить блокировщик рекламы и скриптов, а также разрешить фреймы (aka iframe).
Настройка ssl в apache на CentOS
Хочу поделиться небольшой информацией о том, как настроить ssl подключение в apache на сервере с CentOS и перевести сайты с http на https. Делается это не сложно, но есть пара нюансов.
Недавно я уже рассказывал о том как получить бесплатный ssl сертификат для подтверждения доменного имени. Мы его использовали для организации ssl/tls соединений в почтовом сервере. Теперь его же мы будем использовать для того, чтобы перевести наш сайт на работу по ssl протоколу.
О том, как получить бесплатный сертификат от let’s encrypt и настроить apache на работу с ним читайте в моей статье по настройке web сервера apache на centos 8.
Установка mod_ssl в apache
В качестве сервера у нас выступает apache на CentOS, хотя это не принципиально, настройка на других linux дистрибутивах будет идентичной. Рабочим web сервером является apache. Использовать ssl протокол в apache мы будем с помощью мода mod_ssl. Первым делом проверим, установлен ли он:
Если нет, то устанавливаем:
После установки мода, идем в директорию /etc/httpd/conf.d и правим там файл настроек ssl.conf. Прописываем пути к сертификатами в директивах SSLCertificateFile и SSLCertificateKeyFile.
Создание виртуального хоста с поддержкой ssl
Далее необходимо либо создать новый виртуальный хост apache, либо отредактировать существующий в файле /etc/httpd/conf/httpd.conf. Добавляем в конец файла:
После сохранения проверяем конфигурацию apache:
Если появляется предупреждение:
То ищем в /etc/httpd/conf/httpd.conf строчку NameVirtualHost *:80 и добавляем после нее NameVirtualHost *:443
Снова проверяем. Если ошибок нет, перезапускаем апач и заходим на сайт, прописав в адресной строке https, вместо http. Теперь ваш сайт доступен по протоколу https. Но пользователи сайта могут об этом не знать. Было бы разумным сделать переадресацию с открытого протокола на защищенный. Сделаем это.
Переадресация с http на https
Для того, чтобы сделать автоматическую переадресацию с http на https, необходимо в описании виртуального хоста в httpd.conf добавить порт 80 вместе с 443:
Теперь даже если просто набрать адрес сайта с http откроется его защищенная версия https. Не забудьте проверить, включен ли у вас модуль mod_rewrite в настройках apache. И проверьте фаервол. Для корректной работы сайта по протоколу https необходимо открыть 443 порт на веб сервере.
Онлайн курс по Kubernetes
Онлайн-курс по Kubernetes – для разработчиков, администраторов, технических лидеров, которые хотят изучить современную платформу для микросервисов Kubernetes. Самый полный русскоязычный курс по очень востребованным и хорошо оплачиваемым навыкам. Курс не для новичков – нужно пройти вступительный тест.


