Как установить сертификат на linux centos
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «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
Читайте также: