Как сделать самоподписанный сертификат centos

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

Итак, понадобилось мне тут подключить самоподписанный SSL на свой сайт, вот решил и с вами поделиться как это можно сделать, если у вас не Apache, а Nginx. Уточню лишь только то, что у меня в качестве сервера — CentOS 7.

Генерируем SSL сертификат

Выполним несколько комманд:

Настраиваем NGINX для поддержки SSL на 443 порту

Должно выйти что-то в этом роде:

Не забываем также добавить правило на 443 порт в ваш фаерволл, в моем случае это firewalld :

В этой статье объясняется, как создать самоподписанный сертификат SSL с помощью инструмента openssl .

Что такое самоподписанный сертификат SSL?

Самозаверяющий сертификат SSL — это сертификат, подписанный лицом, создавшим его, а не доверенным центром сертификации. Самозаверяющие сертификаты могут иметь тот же уровень шифрования, что и доверенный сертификат SSL, подписанный ЦС.

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

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

Подготовка

Набор инструментов OpenSSL необходим для создания самозаверяющего сертификата.

Чтобы проверить, установлен ли пакет openssl в вашей системе Linux, откройте терминал, введите openssl version и нажмите Enter. Если пакет установлен, система распечатает версию OpenSSL, иначе вы увидите что-то вроде openssl command not found .

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

Ubuntu и Debian

Centos и Fedora

Создание самоподписанного сертификата SSL

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

Давайте разберем команду и поймем, что означает каждая опция:

  • -newkey rsa:4096 — Создает новый запрос сертификата и 4096-битный ключ RSA. По умолчанию — 2048 бит.
  • -x509 — Создает сертификат X.509.
  • -sha256 — использовать 265-битный SHA (алгоритм безопасного хеширования).
  • -days 3650 — количество дней, в течение которых сертификат должен быть сертифицирован. 3650 — это десять лет. Вы можете использовать любое положительное целое число.
  • -nodes — создает ключ без ключевой фразы.
  • -out example.crt — указывает имя файла, в которое будет записан вновь созданный сертификат. Вы можете указать любое имя файла.
  • -keyout example.key — указывает имя файла, в которое будет -keyout example.key только что созданный закрытый ключ. Вы можете указать любое имя файла.

Для получения дополнительной информации о параметрах команды openssl req посетите страницу документации OpenSSL req.

Как только вы нажмете Enter, команда сгенерирует закрытый ключ и задаст вам ряд вопросов. Предоставленная вами информация используется для создания сертификата.

Введите запрошенную информацию и нажмите Enter .

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

Это оно! Вы создали новый самоподписанный сертификат SSL.

Всегда рекомендуется создавать резервную копию нового сертификата и ключа на внешнем хранилище.

Создание самозаверяющего SSL-сертификата без запроса

Если вы хотите сгенерировать самозаверяющий сертификат SSL без запроса на какой-либо вопрос, используйте параметр -subj и укажите всю информацию о теме:

Поля, указанные в строке -subj , перечислены ниже:

  • C= — Название страны. Двухбуквенное сокращение ISO.
  • ST= — Название штата или провинции.
  • L= — Название населенного пункта. Название города, в котором вы находитесь.
  • O= — полное название вашей организации.
  • OU= — Организационная единица.
  • CN= — полное доменное имя.

Выводы

В этом руководстве мы показали вам, как сгенерировать самоподписанный сертификат SSL с помощью инструмента openssl. Теперь, когда у вас есть сертификат, вы можете настроить приложение для его использования.

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

Шаг первый – Установка mod_ssl
Убедитесь, что у вас установлен Apache + mod_ssl. Для установки mod_ssl введите в консоли сервера команду:


Шаг второй – создайте директорию
Для хранения сертификатов так же неплохо было бы создать отдельную директорию.


Шаг третий, создаем самоподписанный сертификат
Для генерации сертификата воспользуемся одной из команд OpenSSL. Создавая сертификат, укажите срок действия сертификата, в нашем примере указано 365 дней.


После ввода этой команды вам в интерактивном режиме будет задано несколько вопросов, на которые следует ответить.


Шаг четвертый – устанавливаем сертификат
Теперь в дополнительном конфигурационном файле Apache пропишем настройки для виртуальных хостов.

Открываем конфигурационный файл SSL:


По большому счету все готово. Сохраните сделанные изменения.
Перезапустите сервер Apache:

Favorite

Добавить в избранное

Безопасный Apache с Let

L et’s Encrypt – бесплатный, автоматизированный и открытый центр сертификации, разработанный Исследовательской группой Internet Security Research Group (ISRG). Сертификаты, выданные Let’s Encrypt, действительны в течение 90 дней с даты выпуска, и сегодня им доверяют почти все браузеры.

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

Предпосылки

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

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

Установка Certbot

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Безопасный Apache с Let

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

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

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

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

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

Вывод

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

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

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