Настройка openssl на centos

Обновлено: 03.07.2024

Установите OpenLDAP на CentOS 8

В этом руководстве мы создадим последнюю версию исходного кода OpenLDAP вместо использования доступной версии, предоставляемой PowerTools.

Выполните следующие действия, чтобы настроить сервер OpenLDAP на CentOS 8.

Система обновлений

Запустите обновления системы и обновите пакеты.

Установите необходимые программные пакеты

Установите необходимые пакеты, которые позволят вам успешно собрать OpenLDAP.

Создать системную учетную запись LDAP

Нам нужно создать непривилегированного системного пользователя для OpenLDAP..

На момент написания этого руководства последней версией OpenLDAP была 2.4.57.

Объявите версию своей оболочке:

Загрузите последнюю версию с этой страницы .

Распакуйте загруженный файл:

Установить OpenLDAP

Переместите извлеченные файлы в / opt /, затем скомпилируйте исходные файлы.

Скомпилируйте исходные файлы:

После успешной компиляции вы должны увидеть вывод, который гласит: “Please run “make depend” to build dependencies”

Запустите make зависимый, чтобы построить зависимости OpenLDAP.

При успешной установке файлы конфигурации создаются по адресу /etc/openldap . После установки доступны следующие файлы:

Настройка OpenLDAP

Приступим к настройке OpenLDAP.

Во-первых, нам нужно создать каталоги базы данных OpenLDAP .

Установите правильные разрешения для каталогов OpenLDAP:

Создать схему OpenLDAP SUDO

Проверьте, поддерживает ли ваша версия sudo LDAP.

Вы должны увидеть следующие строки в выводе, если ваша система поддерживает LDAP.

Подтвердите, доступна ли схема sudo LDAP в вашей системе.

Скопируйте схему в каталог схемы ldap.

Создайте файл ldif схемы sudo.

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

Настроить базу данных SLAPD

Обновите содержимое файла /etc/openldap/slapd.ldif

Пастер ниже данных:

Выполните пробный запуск, чтобы проверить конфигурацию.

Выполните команду для записи изменений

Приведенная выше команда создает конфигурации базы данных slapd и помещает их в /etc/openldap/slapd.d .

Установите права собственности на каталог slapd:

Создать службу OpenLDAP

Создайте сервис systemd:

Запустить сервис slapd:

Настройка корневого DN OpenLDAP по умолчанию

Создайте базу данных MDB с корневым DN и списками ACL.

Сгенерируйте пароль root:

Скопируйте сгенерированный хэш-пароль в текстовый редактор. Это будет необходимо в rootdn.ldif файле при olcRootPW входе.

Добавьте содержимое ниже, заменив его dc=ldapmaster,dc=infoit,dc=com,dc=ua информацией о вашем домене.

Обновите базу данных slapd

Определите структуру вашей организации

Создайте basedn.ldif файл, чтобы определить структуру вашей организации.

Обновление базы данных:

Настроить SSL / TLS

Вы можете защитить связь клиент-сервер между OpenLDAP и клиентскими системами, включив TLS / SSL.

Установите правильное владение.

Создайте файл конфигурации SSL:

С информацией ниже:

Обновить базу данных slapd

Обновите расположение CA для OpenLDAP.

Создать пользователей OpenLDAP

Определите своих пользователей в файле users.ldif следующим образом:

Вот пример данных:

Обновите базу данных LDAP, чтобы добавить нового пользователя:

Установите пароль для указанного выше пользователя с помощью команды ниже:

Создать пользователя привязки LDAP

Создайте OpenLDAP Bind DN и привяжите пользователя. Это пользователь, который будет использоваться для выполнения открытий LDAP, таких как разрешение идентификаторов пользователей и групп.

Создайте пароль BindDN.

Получите хешированный пароль и сохраните его где-нибудь.

Создайте файл bindDNuser.ldif и добавьте содержимое ниже, не забудьте заменить хешированный пароль и информацию о домене своими данными.

Вот мои конфигурации:

dn: ou=system,dc=ldapmaster,dc=infoit,dc=com,dc=ua objectClass: organizationalUnit
objectClass: top
ou: system

dn: cn=readonly,ou=system,dc=ldapmaster,dc=infoit,dc=com,dc=ua objectClass: organizationalRole
objectClass: simpleSecurityObject
cn: readonly
userPassword: 9Sx4MzBieiojFsXLgXDVnJavwt4vql4p
description: Bind DN user for LDAP Operations

Обновите базу данных ldap:

Разрешить OpenLDAP через брандмауэр

Разрешить OpenLDAP через брандмауэр, чтобы разрешить соединения.

На этом этапе OpenLDAP настроен и готов к использованию. Вам необходимо настроить клиентов OpenLDAP в своих системах, чтобы они могли подключаться к серверу OpenLDAP.

Следуйте приведенному ниже руководству, чтобы настроить клиентов OpenLDAP:

Для удобства настройки заходим под суперпользователем:

Подготовка системы

Обновляем установленные пакеты:

Установим правильную временную зону:

timedatectl set-timezone Europe/Moscow

* в данном примере московское время.

Устанавливаем сервис для синхронизации времени:

yum install chrony

Разрешаем автозапуск службы chrony и запускаем ее:

systemctl enable chronyd --now

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

И отредактируем строчку SELINUX=enforcing на:

Создаем правило для firewalld:

firewall-cmd --permanent --add-port=443/udp

* в данной инструкции мы настроим работу OpenVPN на порту 443 по UDP (по умолчанию, это 1194/UDP). Если в вашем случае необходим другие порт и протокол, меняем значения на соответствующие.

. и применяем его:

* если используется iptables, правило создаем командой iptables -I 1 INPUT -p udp --dport 443 -j ACCEPT, где 443 — порт, который мы будем использовать для openvpn.

Установка, настройка и запуск VPN-сервера

Установка OpenVPN

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

yum install epel-release

Устанавливаем необходимые пакеты следующей командой:

yum install openvpn easy-rsa

Создание сертификатов

В основе идеи VPN лежит шифрование трафика, а значит для его работы необходимы сертификаты.

Переходим в каталог easy-rsa:

* в зависимости от версии easy-rsa, последний каталог может быть другим. Увидеть точное название каталога можно командой ls /usr/share/easy-rsa/.

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

* где KEY_CN и KEY_OU: рабочие подразделения (например, можно указать название отдела); KEY_NAME: адрес, по которому будет выполняться подключение (можно указать полное наименование сервера); KEY_ALTNAMES — альтернативный адрес.
* так как мы генерируем самоподписный сертификат, значения данных полей никак не повлияют на работу OpenVPN, однако, для удобства, лучше подставить реальные данные.


Некоторые из сокращений, связанных с сертификатами:

  • SSL – Secure Socket Layer (Безопасный уровень сокета).
  • CSR – Certificate Signing Request (Запрос на подпись сертификата).
  • TLS – Transport Layer Security (Транспортный уровень безопастности).
  • PEM – Privacy Enhanced Mail
  • DER – Distinguished Encoding Rules
  • SHA – Secure Hash Algorithm (Безопасный hash алгорит).
  • PKCS – Public-Key Cryptography Standards (Стандарты шифрования публичных ключей).

Создание нового приватного ключа (Private Key) и Certificate Signing Request (CSR).

Так же, можно использовать такой вариант:

Создание самоподписанного сертификата (Self-Signed Certificate).

Пример: Чтобы создать self-signed сертификат на 2 год, используйте:

Проверка CSR файла.

и вы получите информацию.

Проверка подписи (signature):

Кем(кому) был выдан сертификат:

Показать открытый ключ (public key):

Создать приватный RSA ключ (Private Key).

Чтобы это сделать, выполните:

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

Удалить ключевую фразу (Passphrase) с ключа.

Если вы установили ключевую фразу для ключа, то при каждом старте веб-сервера (Apache/Nginx) вы должны будите вводить пароль. Если это вас злит, вы можете с легкостью удалить passphrase с RSA ключа.

Проверка приватного ключа (Private Key)

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

Проверка сертификата (Certificate).

Если вы хотите проверить данные сертификата( CN, OU, и т.д.), то вы можете использовать команду, которая даст вам сведения о сертификате:

Команда довольна простая в использовании.

Проверка подписанного сертификата (Certificate Signer Authority).

Можно узнать много полезного.

Создать тестовый SSL сервер.

Команда OpenSSL s_server реализует общий SSL/TLS-сервер. Она должна использоваться только для целей тестирования. В приведенном ниже примере данный сервер прослушивает соединения на порту 8080 и возвращает отформатированную HTML страницу статуса, который включает много информации о ciphers:

Проверить хеш вашего сертификата.

Конвертирование сертификатов с DER в PEM формат.

Как правило, при покупке SSL сертификатов, его отдают вам в формате .der и если вам нужно использовать его в веб-сервере или .pem формате, вы можете использовать команду выше, чтобы преобразовать такие сертификаты.

Конвертирование сертификатов с PEM в DER формат.

В случае, если вам необходимо изменить .pem формат в .der:

Конвертирование CSR c DER в PEM формат.

Создание CSR используя приватный ключ (private key).

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

Проверьте содержимое сертификата в PKCS12 формате.

Конвертирование PKCS12 формата в PEM сертификат.

Получить SHA-1 отпечаток сертификата или CSR

Чтобы получить отпечаток SHA1 сертификата с использованием OpenSSL, используйте команду, приведенную ниже:

Чтобы получить SHA1 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:

Получить MD5 отпечаток сертификата или CSR

Чтобы получить отпечаток MD5 сертификата с использованием OpenSSL, используйте команду, приведенную ниже:

Чтобы получить MD5 отпечаток пальца CSR с использованием OpenSSL, используйте команду, приведенную ниже:

Тестирование SSL сертификата по URL.

Я использую это довольно часто для проверки SSL-сертификатов по URL с сервера. Это очень удобно для проверки некоторых деталей протокола, шифров и CERT.

Узнать версию OpenSSL

Поверка PEM сертификата на завершение (Expiration Date).

Проверка завершения SSL сертификата (Expiration Date) по URL.

Проверить поддержку SSL версии V2/V3 по URL.

Проверка SSL версии V2:

Проверка SSL версии V3:

Проверка TLS 1.0:

Проверка TLS 1.1:

Проверка TLS 1.2:

Проверка поддержки cipher для сайта по URL.

Какой алгоритм используется в сертификате (проверка).

Или, используя URL:

Получить сертификат по URL

Команда что ниже, сохранит сертификат в файл прямо по URL сайта:

Если веб-сервер имеет несколько сертификатов на один IP-адрес, то вам нужно будет сообщить OpenSSL, какой сертификат будет использоваться, пример ниже:

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

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

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

Онлайн курсы по Mikrotik

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

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

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

Автор Zerox

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

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

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

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

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

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

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

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

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

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

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