Меню Рубрики

Установка ssl сертификат centos

Предложение от 8host.com

Создание SSL-сертификата на Apache в CentOS 7

TLS (или Transport Layer Security, протокол безопасности транспортного уровня) и предшествующий ему SSL (Secure Sockets Layer) – это сетевые протоколы, которые шифруют и тем самым защищают трафик. Благодаря этой технологии процесс обмена данными между клиентом и сервером надежно защищен от перехвата посторонним абонентом. Кроме того, система сертификации помогает пользователям проверить подлинность сайта.

В данном руководстве речь пойдет о создании самоподписанного SSL-сертификата для веб-сервера Apache на виртуальном выделенном сервере CentOS 7. Самостоятельно подписанный сертификат не может подтвердить подлинность сайта, поскольку он не заверен центром сертификации (ЦС), которому может доверять браузер; но он будет шифровать взаимодействие между сервером и посетителями сайта, и тем самым повысит безопасность соединения.

Требования

Для выполнения данного руководства нужен предварительно настроенный сервер CentOS 7 и не-рутовая учетная запись пользователя с расширенными привилегиями sudo. Подробнее об этом можно прочесть в руководстве «Начальная настройка сервера CentOS 7».

Кроме того, нужно предварительно установить Apache; для установки веб-сервера можно использовать стандартный менеджер пакетов yum:

Затем нужно запустить Apache в качестве сервиса CentOS, чтобы автоматизировать запуск Apache после перезагрузки:

sudo systemctl enable httpd.service

1: Установка mod_ssl

Чтобы создать самоподписанный сертификат, для начала нужно установить mod_ssl, модуль Apache для поддержки шифрования SSL. Для этого используйте команду yum:

После установки модуль включится автоматически, после чего Apache сможет использовать сертификаты SSL. Осталось только перезапустить Apache, чтобы mod_ssl был готов к использованию.

2: Создание SSL-сертификата

Теперь веб-сервер подготовлен к шифрованию данных. Приступайте к созданию нового SSL-сертификата. Сертификат будет содержать некоторую базовую информацию о сайте; также к нему прилагается key-файл, благодаря которому сервер может обрабатывать зашифрованные данные.

Сначала нужно создать новый каталог, в котором будет храниться ключ сервера (key-файл) и сам сертификат:

При помощи команды openssl создайте ключ и сертификат SSL:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt

После ввода запроса будет открыта командная строка, в которой можно ввести информацию о сайте. Но сперва рассмотрим подробнее вышеприведенную команду:

  • openssl: базовый инструмент командной строки для создания и управления сертификатами, ключами и другими файлами OpenSSL;
  • req -x509: эта опция указывает, что в команде нужно использовать запрос на подпись сертификата (CSR) X.509. X.509 – это стандарт инфраструктуры открытых ключей, которого придерживаются SSL и TLS в управлении ключами и сертификатами.
  • -nodes: благодаря этой опции OpenSSL не станет защищать сертификат паролем. Веб-сервер Apache должен иметь возможность читать файл без вмешательства пользователя; в этом случае пароль будет мешать, так как его придется вводить вручную после каждой перезагрузки.
  • -days 365: эта опция устанавливает срок действия сертификата (в данном случае сертификат действителен в течение года).
  • -newkey rsa:2048: эта опция одновременно создает сертификат и ключ. Поскольку ключ, который необходим для подписи сертификата, не был создан ранее, его нужно создать сейчас. Опция rsa:2048 создаст 2048-битный RSA-ключ.
  • -keyout: данная строка задает каталог, в который нужно поместить закрытый ключ.
  • -out: указывает каталог, в который нужно поместить сертификат.

Теперь заполните форму соответствующими данными. Самым важным полем в форме является 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, это обновит его конфигурации:

Чтобы увидеть новый сертификат в действии, посетите в браузере доменное имя или IP в таком формате:

Скорее всего, браузер выдаст предупреждение вроде «site’s security certificate is not trusted». Это значит, что браузер не может доверять сертификату, который не был заверен авторитетным центром сертификации. Это вполне ожидаемая реакция.

Чтобы продолжить, нужно добавить исключение в проверку подлинности браузера.

Заключение

Теперь сервер Apache поддерживает запросы HTTP и HTTPS. Это обезопасит взаимодействие с клиентами и не позволит посторонним читать ваш трафик.

Читайте также:  Установка пленок на зубы

источник

Настройка 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:

И в корне сайта с помощью .htaccess и mod_rewrite делаем перенаправление всех запросов с http на https:

Теперь даже если просто набрать адрес сайта с http откроется его защищенная версия https. Не забудьте проверить, включен ли у вас модуль mod_rewrite в настройках apache. И проверьте фаервол. Для корректной работы сайта по протоколу https необходимо открыть 443 порт на веб сервере.

Онлайн курс по Linux

Помогла статья? Есть возможность отблагодарить автора

Автор Zerox

13 комментариев

Для чего прописывать дважды SSLCertificateFile и SSLCertificateKeyFile, сначала в ssl.conf а потом в VirtualHost?
попробовал удалить из VirtualHost, рабоает, но не наоборот. А если на сервере несколько доменов?

Зачем дважды? В статье у меня этого нет. Есть глобальные настройки для всех виртуальных хостов, а есть настройки конкретного виртуального хоста. Настраивают обычно каждый виртуальный хост в отдельности, так как сертификаты для них уникальные.

День добрый!
Прекрасно зашли ваши установка CentOS и LAMP, а вот тут ну никак. Вероятно, я чего-то недопонимаю. Хочу мигрировать с Ubuntu на CentOS с имеющимися сайтами и сертификатами.
Можно как-то по-подробнее, с нюансами?

А в чем проблема? Тут фактически надо только указать сертификат в конфиге и все. Нюансов нет.

Да, действительно. Ложная тревога. На второй день нашел пару своих ошибок и одно небольшое недопонимание. Всё ок. Спасибо за Ваши статьи.

Стиль изложения — 5 баллов! Четко и по существу. Спасибо.

А как на Zabbix 4 с Centos 7 сделать https? Можете расписать подробно пожалуйста

Так же как и везде в апаче. Заббикс никаких нюансов не приносит — это обычный сайт на php.

источник

Установка и настройка mod_ssl в Apache на CentOS 5,6, получение SSL сертификата.

Если мы хотим чтобы наш сайт на Apache в CentOS 5,6 не похакали сниферофилы и прочие мазакакеры, то нам просто необходимо поприкрывать все, так сказать, слабые места, а также поставить и настроить mod_ssl, получить SSL сертификат для веб сервера.

Администраторы сетей бывают разные и вполне возможно, что за некоторыми своими сетевыми клиентами может вестись слежка с помощью сниферов, да и собственно не только за некоторыми, а за всеми клиентами сразу могут следить и вероятно уже следят:

СБУ хочет, чтобы провайдеры хранили данные о пользователях 90 дней

Украинский закон «О телекоммуникациях» не позволяет бороться с киберпреступностью в полной мере. Такое мнение на съезде Интернет ассоциации Украины высказал руководитель подразделения СБУ Валентин Петров.

По его словам, выход из ситуации — внести законодательные изменения, которые обязывали бы операторов хранить данные о трафике до 90 дней. «Мы отстаем от всего мира. Многие страны уже привели нормативные акты в соответствие с конвенцией о киберпреступности», – заявил Петров. Петров также считает, что помимо внесения изменений в закон «О телекоммуникациях», необходимо разработать и принять целый закон о киберпреступности, а также стратегию безопасности.

Как обычно под предлогом борьбы с преступностью, борьба реально будет вестись с бизнесом и политически неугодными индивидами путём перехвата и дальнейшего анализа их Интернет трафика (корпоративной почты, посещённых сайтов и пр.). Как там у В. Леонтьева: » Каждый хочет иметь и невесту и друга. «

Читайте также:  Установка кловер в efi

Или к примеру просто админ сети будет местами шутить, так например вычленит из трафика данные административного акаунта от посещаемого тобой сайта, удалит весь контент с сайта, а вместо него напишет АДМИН ЛОХ!:) или что-то в таком духе. В некоторых вопросах АДМИН конечно ЛОХ но, не до такой же степени, чтобы упустить возможность организации безопасного HTTPS (SSL) соединения с веб сервером Apache для администрирования веб ресурса!:)

Установка mod_ssl и openssl

Для организации безопасного HTTPS (SSL) соединения с веб сервером Apache нам потребуется Apache модуль mod_ssl и собственно сам openssl для создания корневого сертификата и сертификата сервера. Проверим наличие в системе mod_ssl и openssl:

Если mod_ssl и openssl не установлен, то устанавливаем:

Самоподписной SSL сертификат сервера Apache

mod_ssl подключается и настраивается через конфигурационный файл /etc/httpd/conf.d/ssl.conf . По умолчанию SSLCertificateFile /etc/pki/tls/certs/localhost.crt и SSLCertificateKeyFile /etc/pki/tls/private/localhost.key уже присутствуют в системе, но желательно бы сгенерировать свой собственный:

На первом шаге мы создали RSA-ключ нашего сервера, которым на следующем шаге будет подписан так званый CSR (сertificate signing request — запрос на получение сертификата) файл. .csr файл будет в себе содержать информацию о владельце сертификата, которую openssl попросит указать задавая вопросы:

На третьем этапе мы создаём и подписываем себе свой 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

Для добавления безопасной HTTPS (SSL) версии сайта для виртуального хоста Apache, нужно в его конфиг файле, например vi /etc/httpd/conf.v/wrs.conf , подправить секцию . , и модифицировать её до такого состояния:

Проверяем конфиги и перезапускаем сервант:

Запуск Apache без ввода пароля для SSL ключа .key

Если вы создавали приватный SSL ключ с его шифрованием openssl genrsa -des3 -out ca.key 2048 и задавали парольную фразу (от 4 до 8191 символов), то при каждом старте/перезапуске веб-сервера будет запрашиваться пароль для приватного SSL ключа .key

Для того чтобы указать веб-серверу путь к файлу пароля от SSL ключа .key делаем:

Потом в httpd.conf или в ssl.conf пишем: SSLPassPhraseDialog exec:/usr/local/etc/rc.d/startssl.pl

Если факир был пьян и фокус не удался, то можно удалить пароль из приватного SSL ключа .key следующим образом:

Бесплатный, доверенный SSL сертификат сервера Apache

Бесплатный самоподписной SSL сертификат созданный нами ранее подойдёт для нашего персонального сайта, при этом пытаясь посетить сайт на котором организовано безопасное HTTPS (SSL) соединение с самоподписным SSL сертификатом для сервера Apache, пользователь получит в браузер предупреждение о том, что сертификат не является действительным и безопасное HTTPS (SSL) соединение может быть не установлено.

В таких случаях обычно нужно или внести сертификат в исключения браузера, или установить SSL сертификат вручную, для чего обычно достаточно ввести в адресную строку браузера путь к сертификату и открыть его в браузере. Но в браузере Опера 11.64 даже после установки SSL сертификата, при попытке посетить сайт через https://, в данных о странице будет указанно » Незащищённое соединение «, » Серверу не удалось принять меры безопасности. » и не ясно, толи соединение вовсе незащищённое, толи соединение защищено частично? Такое загадочное поведение Опера 11.64 характерно для веб-страниц в которые включены сторонние элементы, такие как счётчики, рисунки, скрипты и пр., а если на странице нет сторонних элементов, то слева в адресной строке красуется значок замка с надписью » Безопасный » — конечно если SSL сертификат установлен. Примерно так же ведёт себя и Internet Explorer 8.

В опере можно попробовать снять галку с «opera:config -> Security Prefs -> OCSP Validate Certificates«. У браузеров «Chrome» и «FireFox» поведение иное и если на странице присутствуют иные сторонние элементы, которые загружаются со сторонних незащищённых серверов, то в «Chrome» и «FireFox» указывается, что используется частично безопасное HTTPS (SSL) соединение.

Читайте также:  Установка инжекторной катушки зажигания на карбюраторный мотор

Для избавления от всех этих манипуляций в Сети Интернет можно попытаться раздобыть бесплатный доверенный SSL сертификат для веб сервера. Обычно такие раздачи бесплатных доверенных SSL сертификатов имеют кратковременный характер (выдаются на 30-365 дней) и придуманы для привлечения клиентов. После истечении срока действия SSL сертификата от авторитетного/доверенного поставщика, он ничем не отличается от самоподписанного.

Список доверенных поставщиков бесплатных SSL сертификатов, у которых можно получить бесплатный доверенный SSL сертификат для веб сервера сроком на 30-365 дней:

  • freessl.su — срок от 30 до 90 дней, поставщик COMODO;
  • instantssl.com — Срок 90 дней, поставщик COMODO;
  • ipsca.com — срок 90 дней, поставщик IpsCA;
  • trustico.eu — срок 30 дней, поставщик GeoTrust;
  • rapidssl.com — срок 30 дней, поставщик — они же — RapidSSL;
  • verisign.com — cрок 14 дней, сертификаты не авторизованные (не стоило бы и упоминать);
  • globalsign.com — срок 30 и 45 дней, поставщики — они же — GlobalSign Inc;
  • ssl.com — срок 30 дней, поставщик COMODO;
  • startssl.com — выдает сертификаты на 1 год от StartCom, на сайте поставщика отмечено что, «Many software vendors like Mozilla (Firefox) and Apple (Safari) provide built-in support of the StartCom Certification Authority»;
  • cacert.org — как и предыдущий, даёт сертификат сроком на один год, но веб-браузеры ничего не знают о нём (InclusionStatus — CAcert Wiki) и так же ругаются как и на самоподписанные сертификаты.

Купить SSL сертификат будет стоить где-то минимум 60-80 у.е. в год но, вполне можно обойтись самоподписанным сертификатом и дать пользователям своего сайта соответствующие пояснения и детальную инструкцию по его установке.

Настройка брандмауэра iptables

Последнее, что осталось сделать — это открыть доступ к 443-му порту в брандмауэре. Просмотрите список правил iptables -L -v , и если в цепочке Chain INPUT . последним стоит всё запрещающее правило, то его нужно удалить перед добавлением разрешающего. Для удаления последнего правила iptables используйте iptables -D INPUT ? , где знак вопроса «?» это номер последнего правила iptables — отсчёт сверху в низ начиная с 1.

Добавим в брандмауэре 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/TLS Strong Encryption: FAQ — Apache HTTP Server, кроме использования разных IP, предлагается использовать разные порты, но это тоже не есть оптимальный выход — для каждого хоста писать Listen 444, Listen 445 и т.д., добавлять правило в iptables для порта или диапазона портов, а пользователю ручками вбивать в браузер номер порта или делать для него редирект.

Для реализации 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).

источник

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