Меню Рубрики

Установка letsencrypt centos nginx apache

Установка SSL сертификата Let’s Encrypt на CentOS 7

Автор: ITSeason · Опубликовано 22.07.2019 · Обновлено 05.08.2019

Введение

Вопросам безопасного посещения веб-сайтов сегодня уделяется большое внимание. Особенно это актуально при осуществлении онлайн платежей и вводе персональных данных на интернет-страницах. Защита информации при посещении сайта между компьютером пользователя и веб-сервером осуществляется при помощи SSL сертификатов. SSL сертификат — это уникальная электронно-цифровая подпись интернет сайта. SSL (Secure Sockets Layer) — это криптографический протокол, обеспечивающий шифрование трафика в интернет канале. Сайт не защищенный SSL сертификатом использует HTTP (HyperText Transfer Protocol) протокол, использующий по умолчанию 80 порт. Сайт с установленным сертификатом — HTTPS (HyperText Transfer Protocol Secure). HTTPS — это расширение протокола HTTP для обеспечения поддержки шифрования интернет соединения. Информация передается поверх криптографический протоколов. По умолчании использует 443 порт. HTTPS не является отдельным протоколом. Это все тот же HTTP, только использующий шифрование, тем самым обеспечивающий защиту от атак, основанных на перехвате трафика. Цены на SSL сертификаты, в среднем, начинаются от 1000 рублей в год. Для тех кто не готов платить такую сумму есть возможность получить бесплатный сертификат от Let’s Encrypt. Let’s Encrypt — центр сертификации, выдающий бесплатные SSL сертификаты. Осуществляет свою деятельность с 2015 года. Сегодня мы как раз рассмотрим процесс получения и установки сертификата от Let’s Encrypt на сайты, работающие на веб-серверах Apache и NGINX под управлением операционной системы CentOS 7.

Подготовка к получению сертификата

Получать и устанавливать сертификат мы будем в автоматическом режиме с использованием Certbot. Certbot — это программное обеспечение с открытым исходным кодом для автоматического получения, установки и перевыпуска SSL сертификатов от Let’s Encrypt. Для установки Certbot на CentOS 7 сначала необходимо подключить репозиторий EPEL (Extra Packages for Enterprise Linux).

После подключения репозитория можно приступать к установке Certbot и получению сертификата. Для веб-серверов Apache и NGINX этот процесс будет незначительно отличаться.

Установка на Apache

Устанавливаем пакет Certbot для работы с Apache:

yum install certbot-apache

До установки сертификата сайт выглядит вот так:

Незащищенное HTTP соединение

Выпуск и установка сертификата осуществляется одной командой. Certbot автоматически изменит конфиг виртуального хоста и настроит его на работу с сертификатом. Выполняем:

certbot —apache -d домен.ru -d www.домен.ru

По запросу системы нужно будет указать адрес электронной почты администратора. Так же система спросит необходимо ли делать редирект с HTTP на HTTPS или нет. Отвечаем как вам необходимо.

И дожидаемся окончания установки.

Установка сертификата завершена

После установки система сообщит пути к выпущенным сертификатам.

Теперь необходимо перезапустить Apache:

Переходим на сайт и проверяем установился ли наш сертификат.

Защищенное HTTPS соединение

Все в порядке, сертификат установлен, мы подключились к сайту через защищенное HTTPS соединение. Нажав на замок вверху экрана можно можно посмотреть сведения о сертификате.

Сертификаты от Let’s Encrypt действительны в течении трех месяцев. Перед окончанием срока действия сертификата Certbot автоматически перевыпустит его.

Установка на NGINX

Устанавливаем пакет Certbot для работы с NGINX:

certbot —nginx -d домен.ru -d www.домен.ru

Отвечаем на вопросы так же как и в случае с Apache.

После установки перезапускаем NGINX:

Переходим на сайт и проверяем наличие сертификата.

Заключение

В настоящей статье мы рассмотрели процесс установки SSL сертификата на сайты работающие на веб-серверах Apache и NGINX. Как видите все очень просто, весь процесс занимает не более 5 минут. Если остались вопросы — пишите в комментариях.

источник

Настройка Nginx с Let’s Encrypt на CentOS 7

Наверно, многие уже в курсе, что компания Let’s Encrypt раздает бесплатные SSL-сертификаты на https://letsencrypt.org. Как же его получить и настроить на своем сервере под управлением CentOS 7 и Nginx?

Введение

Давайте его получим. Let’s Encrypt это новый центр сертификации (CA), который позволяет простым способом бесплатно получить и установить TLS / SSl сертификат, позволяя нам шифровать HTTPS трафик на ваших веб-серверах. Этот процесс уже автоматизирован программой letsencrypt, но, к сожалению, только под управлению веб-серверами Apache.

В этом уроке я покажу вам, как получить SSL сертификат под Nginx, CentOS 7. Также настроим автоматическое продление сертификата, так как он дается на 90 дней.

Шаг 1 — Установка клиента Letsencrypt

Итак, что мы имеем:
— Веб сервер под управлением CentOS, Nginx;
— Установленные программы Git, Bc.

После того, как git и bc установлены, переходим к клонированию проекта letsencrypt из GitHub.

Читайте также:  Установка границ в миф

Теперь у вас должна быть копия проекта в /opt/letsencrypt.

Шаг 2 — Получение сертификата

Letsencrypt предоставляет множество способов получения SSL-сертификатов с помощью различных плагинов. В отличии от плагина Apache, который устанавливается автоматически, нам придется ставить сертификат вручную.

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

Переходим к проекту Letsencrypt, куда мы клонировали файлы. И запускаем генерацию сертификатов командой letsencrypt-auto certonly, используя плагин webroot.

-d example.com -d www.example.com — наши домены
—webroot-path=/usr/share/nginx/html директория, где лежит наш проект

Примечание: запускаем приложение letsencrypt-auto без sudo

После того, как letsencrypt инициализирует, нам необходимо будет вести дополнительные данные. Предложенные вопросы могут варьироваться в зависимости от того, как давно вы использовали letsencrypt раньше, но мы запускаем первый раз.

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

Соглашайтесь с условиями пользования Letsencrypt.

Если все прошло успешно, тогда в консоли вы должны увидеть примерно это:

Мы видим, куда сохранились созданные сертификаты /etc/letsencrypt/live/example.com/ и дату истечения действия сертификата 2016-03-15.

Если вы получили ошибки, типа: Failed to connect to host for DVSNI challenge, настройте firewall вашего сервера, что бы TCP трафик проходил по портам 80 и 443.

После получения сертификата, вы будете иметь следующие PEM-закодированных файлы:

cert.pem: сертификат для вашего домена
chain.pem: Let’s Encrypt цепь сертификатов
fullchain.pem: cert.pem и chain.pem
privkey.pem: Сертификат с приватным ключом

В целях дальнейшего повышения уровня безопасности, мы сформируем ключ по алгоритму шифрования Диффи-Хеллмана. Чтобы создать 2048-битный ключ, используйте следующую команду:

Это нужно, чтобы у нас заработал Forward Secrecy. Прямая секретность означает, что если третья сторона узнает какой-либо сеансовый ключ, то она сможет получить лишь доступ к данным, защищенным лишь этим ключом. Для сохранения совершенной прямой секретности ключ, используемый для шифрования передаваемых данных, не должен использоваться для получения каких-либо дополнительных ключей.

Процесс может занять несколько минут, но когда ключ создастся, он будет помещен в каталог в /etc/ssl/certs/dhparam.pem.

Шаг 3 — Настройка TLS/SSl на веб-сервере Nginx

Настройка конфигурации Nginx, используя SSl — сертификаты.

Шаг 4 — Настройка автопродление

Сертификаты действительный 90 дней, но рекомендуется продлевать сертификаты каждые 60 дней. Мы это автоматизируем с помощью cron.

Чтобы запустить процесс обновления для всех установленных доменов, выполните следующую команду:

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

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

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

Этак команда создаст cron, который каждый понедельник будет выполнять автоматическое продление letsencrypt сертификатов в 2:30 и перезагружать Nginx в 2:35. Вся информация об обновлении будет логироваться в /var/log/le-renew.log.

Шаг 5 — Обновление Let’s Encrypt (не обязательно)

Всякий раз, когда новые обновления доступны для клиента Let’s Encrypt, вы можете обновить локальную копию, запустив git pull из каталога /opt/letsencrypt:

Это позволит загрузить все последние изменения из хранилище для обновления клиента Let’s Encrypt.

Финиш! Ваш веб-сервер теперь использует шифрование TLS / SSL, и все это бесплатно. Давайте шифровать HTTPS контент, стоять на страже неприкосновенности частной жизни. Также это повысит видимость сайта в выдаче Google.

источник

Установка бесплатного сертификата от Let’s Encrypt на сайт с сервером CentOS 6 + ISPmanager 4 + Nginx + Apache

Честно говоря, я далек от тонкой настройки веб-серверов, но, несмотря на это, изредка мне все же приходится иметь с ними дело. Весь минус сервера (для меня, в отличие от обычного хостинга) – это то, что для того чтобы установить какое либо дополнение для сайта, необходимо перебрать кучу разных библиотек и дополнительных пакетов. И, как вы поняли, сегодня мы поговорим о варианте установки бесплатного сертификата от Let’s Encrypt на сервер в комплектации CentOS 6 + ISPmanager 4 + Nginx + Apache. Именно такая задача встала передо мной при работе с сервером в этот раз.

Если вы имеете свежую версию панели управления (напомню, что в моем случае это была панель ISPmanager), то установка сертификата осуществляется буквально в пару несложных шагов, когда как старые версии лишены такой роскоши и все необходимо проделывать вручную. Мне удалось оседлать этого коня (перевод сайта на протокол https), и как именно, я расскажу вам подробно в этой статье.

Читайте также:  Установка генератора на лодочный мотор сузуки

Выпуск бесплатного сертификата на сервере от Let’s Encrypt

Путь перевода сайта на защищенный протокол мы начнем с выпуска сертификата. Все это делается по большей части в автоматическом режиме с помощью утилиты «certbot-auto».

1. Итак, для начала подключитесь к вашему серверу по SSH под главным профилем.

2. Далее выполните три команды в окне программы, через которую вы осуществляли соединение с сервером.

Таким образом, мы скачиваем «certbot-auto» на наш сервер и разрешаем его выполнение.

3. Далее выполняем команду на получение сертификата для конкретного домена:

«your_site.com» здесь – это ваш домен (прописывается два раза), а «/var/www/pandoge/data/www/your_site.com» – полный рут адрес до папки сайта. О том, как узнать этот адрес, написано в отдельной нашей статье.

Если все сделано правильно, то вы получите сообщение следующего содержания:

Если этого сообщения вы не получили, то перепроверяйте пути до сайта – это, на мой взгляд, самая распространённая проблема.

Все выпущенные сертификаты будут находиться на вашем сервере по пути:

Где «your_site.com» – это домен, для которого вы выпускали сертификат. В папке вы найдете 4 файла. Это:

  1. cert.pem – сертификат домена;
  2. chain.pem – промежуточный сертификат;
  3. privkey.pem – приватный ключ сертификата;
  4. fullchain.pem – объединение cert.pem и chain.pem.

Нас с вами интересуют только два последних файла. Запомните их местоположение, так как позже они нам понадобятся.

4. Поскольку сертификат от Let’s Encrypt дается всего на 3 месяца, то по истечении этого времени сертификат нужно перевыпускать. Сделать это можно вручную с помощью команды:

или автоматически с помощью планировщика cron. Для этого зайдите в панель управления вашим сервером. В левом меню найдите раздел «Инструменты», пункт «Планировщик (cron)»:

На открывшейся странице в правом верхнем углу нажмите «Создать»:

В появившейся форме выбираете аналогичные параметры:

В качестве исполняемой команды вы пишете:

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

С выпуском сертификата мы закончили, теперь осталось привязать их к необходимым доменам.

Привязка бесплатного сертификата от Let’s Encrypt к сайту

Здесь тоже нет ничего сложного. Главное – внимательно выполняйте все шаги.

1. В панели управления вашим сервером, в левом меню перейдите в раздел «Домены», пункт «WWW домены»:

2. На открывшейся странице вы ищете ваш домен и щелкаете по нему два раза левой кнопкой мыши, после чего у вас откроется окно с его настройками:

Здесь вы ставите галку на «SSL», после чего ниже у вас появится два пункта. Это «SSL порт» (будет заполнен автоматически) и «SSL сертификат» (должно быть выбрано «создать новый самописный»).

Жмете «Ok» и ждете, пока ваш сервер перезагрузится для применения новых параметров.

3. Далее в левом меню вы ищете «Менеджер файлов» в разделе «Инструменты» и переходите к нему. В нем вам нужно пройти по адресу:

где «pandoge» – это ваш логин. В этой папке находятся все самоподписанные сертификаты всех доменов на вашем сервере.

Здесь вы ищете файлы your_site.com.crt и your_site.com.key. Удаляете их и в замен создаете символические ссылки на файлы с 3 шага в выпуске сертификата.

Для этого в верхнем правом углу вы жмете «Создать»:

А появившуюся форму заполняете данные по аналогии для файла your_site.com.crt:

Затем то же самое вы проделываете для файла your_site.com.key:

Во всех случаях не забывайте «your_site.com» заменять на ваш домен, для которого вы выпускали сертификат и который настраиваете в данный момент.

После того, как все настройки выполнены, ваш сайт будет доступен по протоколу https. Далее вы уже добавляете 301 редирект, чтобы исключить дубли страниц сайта, и осуществляете прочие процедуры для переиндексации сайта по новому протоколу.

Простой пример 301 редиректа с http на https:

Его необходимо вставлять сразу после строки «RewriteEngine On» в файле .htaccess, который находится в корне настраиваемого сайта.

Читайте также:  Установка вентиляции для подвальных помещений

На этом все. Если остались вопросы – пишите об это в комментариях под данной статьей.

источник

Безопасный Apache с Let’s Encrypt на CentOS 7

Главное меню » Операционная система CentOS » Безопасный Apache с Let’s Encrypt на CentOS 7

В этой статье мы рассмотрим шаги, необходимые для установки бесплатного SSL-сертификата для шифрования SSL на сервере CentOS 7 с Apache в качестве веб-сервера. Мы будем использовать утилиту certbot для получения и обновления сертификатов Let’s Encrypt.

Предпосылки

Перед продолжением этой статьи, убедитесь, что вы выполнили следующие предварительные условия:

  • Укажите имя домена, указывающий на ваш IP-адрес общего сервера. В этой статье мы будем использовать домен andreyex.ru .
  • Установленный Apache и запущен на сервере.
  • Виртуальный хост Apache для своего домена.
  • Открытые порты 80 и 443 в своем брандмауэре.

Установите следующие пакеты, которые необходимы для SSL-зашифрованного веб-сервера:

Установка Certbot

Certbot – это инструмент, упрощающий процесс получения SSL-сертификатов от Let’s Encrypt и автоматического включения HTTPS на вашем сервере.

Пакет certbot предоставляется EPEL. Если репозиторий EPEL не установлен в вашей системе, вы можете установить его, используя следующую команду:

После того, как репозиторий EPEL включен, установите пакет certbot, введя:

Создание Dh (Диффи-Хеллман)

Обмен ключами Diffie-Hellman (DH) – это метод безопасного обмена криптографическими ключами по необеспеченному каналу связи. Создайте новый набор параметров 2048 бит DH для усиления безопасности:

Вы можете изменить размер до 4096 бит, но в этом случае генерация может занять более 30 минут в зависимости от энтропии системы.

Получение сертификата SSL для шифрования

Чтобы получить сертификат SSL для нашего домена, мы собираемся использовать плагин Apache, который работает, создавая временный файл для запрашиваемого домена в каталоге, $/.well-known/acme-challenge , а сервер проверки подлинности Let’s Encrypt делает HTTP-запросы для проверки DNS для запрашиваемого домена разрешение на сервер, на котором выполняется certbot.

Чтобы сделать его более простым, мы собираем все HTTP-запросы для .well-known/acme-challenge в одном каталоге /var/lib/letsencrypt . Следующие команды создадут каталог и сделают его доступным для записи на сервере Apache.

Следующие команды создадут каталог и сделают его доступным для записи на сервере Apache.

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

В приведенном выше фрагменте используются чипперы, рекомендованные Cipherli.st, позволяющие сшивание OCSP, строгая транспортная безопасность HTTP (HSTS) и использование нескольких HTTP-заголовков, ориентированных на безопасность.

Перезагрузите конфигурацию Apache, чтобы изменения вступили в силу:

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

Если сертификат SSL будет успешно получен, certbot напечатает следующее сообщение:

CentOS 7 поставляется с Apache версии 2.4.6, которая не включает директиву SSLOpenSSLConfCmd . Эта директива доступна только на Apache позже 2.4.8 и используется для настройки параметров OpenSSL, таких как обмен ключами Diffie-Hellman (DH).

Нам нужно будет создать новый комбинированный файл, используя SSL-сертификат Let’s Encrypt и созданный файл DH. Для этого введите:

Теперь, когда все настроено, отредактируйте конфигурацию виртуального хоста домена следующим образом:

С приведенной выше конфигурацией мы устанавливаем HTTPS и перенаправляем с www на не-www-версию. Не стесняйтесь настраивать конфигурацию в соответствии с вашими потребностями.

Перезапустите службу Apache, чтобы изменения вступили в силу:

Теперь вы можете открыть свой веб-сайт, https:// и вы заметите значок зеленого замка.

Если вы протестируете свой домен с помощью теста SSL Labs Server, вы получите оценку A +, как показано ниже:

Автоматическое обновление Шифрование SSL-сертификата

Сертификаты Encrypt действительны в течение 90 дней. Чтобы автоматически продлить срок действия сертификатов до истечения срока их действия, мы создадим cronjob, который будет работать два раза в день и автоматически обновит сертификат за 30 дней до истечения срока его действия.

Запустите команду crontab для создания нового cronjob, который обновит сертификат, создаст новый комбинированный файл, включая ключ DH, и перезапустит apache:

Чтобы протестировать процесс обновления, вы можете использовать переключатель —dry-run в certbot:

Если ошибок нет, это означает, что процесс обновления был успешным.

Вывод

В этой статье вы использовали клиент Let’s Encrypt, certbot для загрузки сертификатов SSL для вашего домена. Вы также создали фрагменты Apache, чтобы избежать дублирования кода и настроите Apache для использования сертификатов. В конце статьи вы создали cronjob для автоматического обновления сертификата.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

источник

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

Adblock
detector