Как установить сертификат на linux centos

Обновлено: 04.07.2024

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти .

Недавно я уже рассказывал о том как получить бесплатный ssl сертификат для подтверждения доменного имени. Мы его использовали для организации ssl/tls соединений в почтовом сервере. Теперь его же мы будем использовать для того, чтобы перевести наш сайт на работу по ssl протоколу.

О том, как получить бесплатный сертификат от let's encrypt и настроить apache на работу с ним читайте в моей статье по настройке web сервера apache на centos 8.

Установка mod_ssl в apache

В качестве сервера у нас выступает apache на CentOS, хотя это не принципиально, настройка на других linux дистрибутивах будет идентичной. Рабочим web сервером является apache. Использовать ssl протокол в apache мы будем с помощью мода mod_ssl. Первым делом проверим, установлен ли он:

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

Создание виртуального хоста с поддержкой ssl

После сохранения проверяем конфигурацию apache:

Если появляется предупреждение:

Онлайн курс "DevOps практики и инструменты"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, научиться непрерывной поставке ПО, мониторингу и логированию web приложений, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по .

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

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

Здравствуйте не подскажите можно ли получить сертификат lets encrypt если например будет два сервера с внешними ip и при этом один плавающий будет на два сервера, доменное имя к нему будет прикручено к плавающему ip?

Можно. Сервер же клиентам все равно будет отвечать с какого-то ip. Let's encrypt во время выпуск сертификата делает проверку обычным запросом на web сервер.

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

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

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

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

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

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

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

Ключевые принципы Let’s Encrypt:

2. Как он работает.

На первом этапе агент уведомляет Центр Сертификации о правах администратора сервера на доменное имя. На втором этапе, после подтверждения прав на домен, агент может запрашивать, обновлять и отзывать сертификаты.

2.1. Проверка домена.

Let’s Encrypt идентифицирует web-сервер с запущенным агентом по открытому ключу. Открытый и закрытый ключи генерируются агентом перед первым подключением к Центру сертификации Let’s Encrypt. После подключения агента к Центру Сертификации, создаётся аккаунт администратора сервера. В созданный аккаунт добавляются доменные имена, которыми владеет администратор, аналогично тому, как это происходит в платных Центрах Сертификации.

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


Далее, Центр Сертификации проверяет, всё ли было сделано верно: корректную цифровую подпись на одноразовом пароле, возможность скачать созданный файл по URI, а также его содержимое.


2.2. Выпуск и отзыв сертификатов.



3. Основные преимущества.

4. О его недостатках.

В конце нужно отметить, что несмотря на все преимущества данного типа сертификата, существуют недостатки, которые нужно учитывать при выборе SSL:

  • WildCard сертификат для защиты поддоменов определённого домена;
  • Сертификаты OV SSL( Organization Validation), предполагающие проверку не только домена, но и компании;
  • Сертификаты EV SSL (Extended Validation), сертификат с максимальной степенью защиты и зелёной адресной строкой браузера;
  • Multi-Domain сертификат типа UCC.

5. Подготовка и установка утилиты certbot.

5.1. Установка snapd.

Установим EPEL репозиторий:

Установим snapd:

Пропишем автозапуск snapd при старте операционной системы:

Ответ:


Проверим начало работы snapd:

Ответ:


Чтобы включить поддержку snap, требуется создать символическую связь между /var/lib/snap/snap и /snap :

После этого либо выйдите из системы и снова войдите в нее, либо перезагрузите систему, чтобы убедиться, что пути snap связались правильно.

Можно просто создать внутри каталога файл и зайти посмотреть его с обоих путей.

5.2. Убедимся в актуальности snapd.

Выполните следующие инструкции в командной строке.

Ответ:


Убедимся, что у вас установлена последняя версия snapd:

Ответ:


5.3. Удалите certbot-auto и его пакеты.

Для удаления certbot-auto, требуется выполнить следующие действия:

Если вы добавили в cron или systemd таймер автоматического запуска certbot-auto для перевыпуска сертификатов, вам следует удалить все эти настройки.

Если вы это делали по ранее написанным инструкциям, вы можете удалить все задачи в файле /etc/crontab .

Возможно, что там будет нечто похожее на это:

Удалите скрипт certbot-auto, обычно он располагается вот здесь /usr/local/bin :

Вывод действий в консоли:


5.4. Установка утилиты certbot.

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

Ответ:


5.4. Подготовка утилиты certbot.

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

6. Получение бесплатного ssl-сертификата.

Наша следующая задача — получить бесплатные сертификаты.

Для этого временно остановим nginx, если он вдруг оказался запущен и подтвердим владение доменами с помощью temporary webserver, который certbot поднимет сам на время верификации доменов.

После того, как получили сертификаты, можно проверить конфиг nginx и запустить его. Ошибок быть не должно. Если они есть, то разбирайтесь с ними, возможно где-то ошиблись и допустили простые досадные опечатки.

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

7. Список установленных сертификатов.

Для просмотра всего что генерировал вам Let’s Encrypt введите команду:

Ответ: длинный список ваших сертификатов.

8. Автоматическое обновление ssl-сертификата.

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

Настроим автоматический выпуск новых ssl сертификатов, взамен просроченных путем помещения команды certbot renew --dry-run куда-нибудь по смыслу в эти модули:

1. Если у вас возникает ошибка доступа к сайтам, в связи с истечением сертифика IdenTrust DST Root CA X3 на старых системах.


2. Если вы получаете ошибки git:

3. Ошибка CERTIFICATE_VERIFY_FAILED

ОС Ubuntu 16.04

Пропишите новые сертификаты в конфигурационном файле:

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

Сборка всех сертификатов находится в файле /etc/ssl/certs/ca-certificates.crt

ОС Centos 7

Установите программу для работы с сертификатами:

Сборка всех сертификатов находится в файле /etc/ssl/certs/ca-bundle.crt

Перезапуск сервисов

После настройки корневого сертификата следует перезапустить некоторые программы.

Windows 7

Контрольные суммы сертификата:

MD5: 118ecd744d864b32ffdb48b2e29f1d7f
SHA1: 4de9627fe9ace4acce27eaa1a0837cd3db55704b
SHA256: 22b557a27055b33606b6559f37703928d3e4ad79f110b407d04986e1843543d1


3.Откройте пункт Конфиденциальность и Безопасность и выберите раздел безопасность


4. Откройте пункт Настроить сертификаты


5. Выберите пункт Доверенные корневые центры сертификации


6. Нажмите на кнопку Импорт

7. Нажмите обзор и выберите загруженный файл.


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




8. Убедитесь что установка идет в Доверенные корневые центры сертификации.

Когда вы сгенерировали CSR-запрос и приобрели SSL сертификат, воспользуйтесь этой инструкцией по установке сертификата на веб-сервер Nginx под управлением Linux: Ubuntu, Debian или CentOS.

После заказа SSL сертификата файлы для его установки отразятся в панели управления (меню SSL): .CA - файл сертификата Центра Сертификации (Certificate Authority). .CRT - файл сертификата вашего веб-сайта.



Как загрузить нужные файла на веб-сервер

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

Внимание: предполагается, что нужная для применения пара закрытый/открытый ключ была создана на том же веб-сервере, куда будет перенесен приобретенный сертификат. При создании ключей на другом сервере следует также перенести файл закрытого ключа .key на ваш веб-сервер (аналогично описанной ниже процедуре копирования файлов сертификатов).

Как переносить сертификаты с компьютера Linux/Mac OS:

Проще всего – при помощи опции SCP, встроенной в возможность терминала вашего компьютера:

Скачайте файлы .CA и .CRT на локальный компьютер. Откройте терминал и папку с сохраненными сертификатами (напр., Downloads):

Скопируйте сертификаты вашего сайта и Центра Сертификации на веб-сервер:

scp - команда для копирования файлов

user - имя вашего пользователя для подключения к серверу через ssh (часто используется root)

1.1.1.1 - IP-адрес вашего веб-сервера

/etc/ssl - директория на удаленном сервере, куда следует сохранить загружаемые файлы.

Как переносить сертификаты с компьютера Windows:

Скачайте, установите и включите программу WinSCP. В открывшемся окне наберите данные для подключения к вашему серверу по SSH. Слева в окне отразятся файлы на локальном компьютере, справа - на подключенном удаленном сервере. Выберите или создайте директорию, куда нужно сохранить сертификаты, в правой части окна. Перетащите файлы .CA и .CRT в эту директорию из левой части окна.

Внимание: можно перенести файл закрытого ключа (.key) для удобства в ту же директорию, куда вы скопировали файлы сертификатов. Если вы не делаете этого, просто запомните путь до этого файла и потом укажите его в файле конфигурации Apache вместо пути, рассмотренном в нашем примере.

Если закрытый ключ .key сгенерирован прямо на сервере, то для его копирования в другую директорию подойдет команда:

cp /home/root/private.key /etc/ssl/private.key

cp - команда копирования

/home/root/ - путь до файла ключа

private.key - имя файла ключа

/etc/ssl/private.key - путь, по которому необходимо скопировать файл ключа

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

Как настроить веб-сервер Nginx на применение SSL сертификата

После копирования файлов сертификата сайта и Центра Сертификации вы должны отредактировать параметры вашего веб-сервера Nginx. Подключитесь к вашему серверу по SSH от имени пользователя root и выполните такие действия:

1. Объедините файлы сертификата Центра Сертификации (.CA) и сертификата вашего веб-сайта (.CRT) в один документ:

2. Откройте файл конфигурации сайта, для которого устанавливается SSL сертификат. Если, к примеру, параметры веб-сайта хранятся в файле /etc/nginx/sites-enabled/default:

Внимание: На Ubuntu/Debian файлы параметров сайтов Nginx обычно располагаются в директории /etc/nginx/sites-enabled/ . На CentOS стандартное расположение - /etc/nginx/conf.d/

Для поиска интересующей конфигурации подойдет команда ls /директория/конфигураций (напр. ls /etc/nginx/sites-enabled), отображающая полный список файлов в нужной директории.

Внимание для CentOS: если на сервере не установлен редактор nano, используйте такую команду для его установки:

используйте такую команду для его установки:

yum install nano

Затем добавьте приведенные ниже параметры в открытый файл конфигурации:

listen 443 ssl;
ssl_certificate /etc/ssl/mydomain.crt;
ssl_certificate_key /etc/ssl/private.key;

/etc/ssl/mydomain.crt - путь до файла сертификатов вашего сайта и центра сертификации

/etc/ssl/private.key - путь к файлу вашего закрытого ключа

(изменения выделены жирным шрифтом).

Перезапустите сервис nginx:

service nginx restart

Ubuntu 16.04:

ufw allow 443/tcp

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT

Читайте также: