Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM Сертификаты
Содержание
  1. Что означает красный цвет
  2. Настройка маршрутов на основе политик
  3. 1: установка easy-rsa
  4. 2: подготовка инфраструктуры открытых ключей
  5. 3: создание центра сертификации
  6. 4: распространение открытого сертификата цс
  7. 5: проверка автоматического обновления сертификата
  8. Автоматическая настройка netplan
  9. Другие полезные команды openssl
  10. Загрузка необходимых файлов на веб-сервер
  11. Запрос ssl сертификата в linux
  12. Как создать учетную запись пользователя
  13. Как удалить учетную запись пользователя
  14. Маршрутизация для несколько сетевых интерфейсов
  15. Настройка
  16. Настройка source based routing
  17. Настройка дополнительных полей ssl сертификата в linux
  18. Немного о ssl-сертификатах
  19. Отключение networkmanager
  20. Отключение автонастройки netplan
  21. Параметры сетевых интерфейсов
  22. Перенос сертификатов с компьютера linux/mac os:
  23. Повышение сервера до контроллера домена
  24. Подпись ssl сертификата linux в доменном центре сертификации
  25. Подпись запроса на сертификат
  26. Создание и подпись запроса на сертификат
  27. Создание учетной записи пользователя с помощью windows powershell
  28. Требования
  29. Удаление учетной записи пользователя с помощью windows powershell
  30. Установка корневого сертификата на сервере (ubuntu)
  31. Установка роли active directory domain services
  32. Шаг #1: активация модуля ssl
  33. Шаг #2: создание новой директории
  34. Шаг #4: установка сертификата
  35. Шаг #5: активация нового виртуального хоста
  36. Шаг 1. установка пакета «let’s encrypt»
  37. Опционально: создание запросов на подпись и отзыв сертификатов
  38. Отзыв сертификата

Что означает красный цвет

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

Настройка маршрутов на основе политик

В основе маршрутизации на основе политик лежат таблицы. Для каждой таблицы настраиваются свои маршруты и политики. Проверим наличие в системе пакета iproute2. Если его нет, произведите его установку.

apt install iproute2

Откройте файл с таблицами маршрутизации

nano /etc/iproute2/rt_tables

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

700 700701 701

Формат записи: приоритет (число) пробел название таблицы (число).
Теперь откройте файл Netplan с настройками сетевых интерфейсов. Он расположен по пути /etc/netplan/ и имеет расширение .yaml. В моём случае путь такой:

nano /etc/netplan/50-cloud-init.yaml

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

Для каждого сетевого интерфейса добавляем блоки routes и routing-policy. Итоговая запись для 1 интерфейса будет выглядеть так:

network:
    version: 2
    ethernets:
        enp0s5:
            addresses:
            - 78.89.90.12/24
            gateway4: 78.89.90.1
            match:
                macaddress: 54:43:32:21:10:09
            mtu: 1500
            nameservers:
                addresses:
                - 8.8.8.8
                - 1.1.1.1
                - 8.8.4.4
                search: []
            set-name: enp0s5
            routes:
                - to: 0.0.0.0/0
                  via: 78.89.90.1
                  table: 700
            routing-policy:
                - from: 78.89.90.12
                  table: 700
                  priority: 300

Для других интерфейсов запись будет аналогична, начиная с имени интерфейса (enp0s5), но у других должен отсутствовать параметр gateway4, т.к. шлюз по умолчанию должен быть один. Настройки routes и routing-policy:

  • to – адрес назначения пакета. Для наших целей – любой (0.0.0.0/0)
  • via – адрес шлюза для данного интерфейса
  • table – имя таблицы маршрутизации. Должны быть указаны одинаковые значения в routes и routing-policy для одного интерфейса, но быть различными от интерфейса к интерфейсу. Данные таблицы мы создали в файле rt_tables
  • from – адрес источника пакета. Для целей данного руководства – это IP адрес интерфейса
  • priority – обязательное числовое значение

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

netplan generate

Подобный вывод укажет на ошибку при их наличии (в данном случае пропущен пробел):

/etc/netplan/50-cloud-init.yaml:23:12: Invalid YAML: inconsistent indentation:
           routes:
           ^

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

netplan apply

После применения изменений настроенные таким образом сетевые интерфейсы станут доступны извне по своим публичным IP адресам.

1: установка easy-rsa

Для начала нужно установить набор сценариев easy-rsa на ваш сервер ЦС. Пакет easy-rsa – это инструмент управления центрами сертификации, который вы будете использовать для создания закрытого ключа и открытого сертификата; позже они понадобятся для подписи запросов от клиентов и серверов, которые будут обращаться к вашему ЦС.

Войдите на свой сервер ЦС как пользователь sudo (не root) и выполните следующие команды:

sudo apt updatesudo apt install easy-rsa

Нажмите y, чтобы подтвердить, что вы хотите установить пакет.

Теперь у вас есть все, что вам нужно для настройки Easy-RSA. На следующем этапе мы создадим инфраструктуру открытых ключей, а затем начнем создавать ЦС.

2: подготовка инфраструктуры открытых ключей

Теперь пора создать инфраструктуру открытых ключей (PKI) на сервере ЦС. Убедитесь, что вы работаете как пользователь sudo, и создайте каталог easy-rsa. Использовать sudo для запуска следующих команд не нужно, поскольку ваш обычный пользователь должен управлять и взаимодействовать с ЦС без повышенных привилегий.

mkdir ~/easy-rsa

Эта команда создаст в домашнем каталоге новый каталог по имени easy-rsa. Мы будем использовать его для создания символических ссылок (симлинков), указывающих на файлы пакета easy-rsa, которые мы установили на предыдущем этапе. Эти файлы находятся в папке /usr/share/easy-rsa.

Создайте симлинки с помощью команды ln:

ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Примечание: В других мануалах вы можете прочесть, что вам нужно скопировать файлы easy-rsa в каталог PKI. Но в данном мануале используется метод символических ссылок. Это удобно, потому что в результате любые обновления пакета easy-rsa будут автоматически отражаться в скриптах вашей PKI.

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

chmod 700 /home/8host/easy-rsa

Теперь инициализируйте PKI в каталоге easy-rsa:

cd ~/easy-rsa./easyrsa init-pkiinit-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/8host/easy-rsa/pki

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

3: создание центра сертификации

Прежде чем вы сможете создать закрытый ключ и сертификат ЦС, вам нужно создать файл по имени vars и заполнить его некоторыми значениями по умолчанию. Перейдите в каталог easy-rsa, затем создайте и отредактируете файл vars с помощью nano или другого текстового редактора:

cd ~/easy-rsanano vars

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

4: распространение открытого сертификата цс

Теперь ваш ЦС настроен и готов выступать корнем доверия для любых систем, которые вы хотите настроить для его поддержки. Вы можете добавить сертификат ЦС на свои серверы OpenVPN, веб-серверы, почтовые серверы и т. д. Любой пользователь или сервер, которому необходимо проверить подлинность другого пользователя или сервера в вашей сети, должен иметь копию файла ca.crt, импортированного в хранилище сертификатов своей операционной системы.

Чтобы импортировать открытый сертификат ЦС во вторую систему Linux (например, на другой сервер или локальный компьютер), сначала получите копию файла ca.crt с вашего сервера ЦС. Вы можете использовать команду cat, чтобы вывести файл в терминал, а затем скопировать и вставить его в файл на втором компьютере (на который нужно импортировать сертификат).

Выполните следующую команду на сервере ЦС:

cat ~/easy-rsa/pki/ca.crt

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

—–BEGIN CERTIFICATE—–MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .—–END CERTIFICATE—–

Скопируйте все, включая строки —–BEGIN CERTIFICATE—– и —–END CERTIFICATE—–.

На второй машине откройте файл /tmp/ca.crt:

nano /tmp/ca.crt

Вставьте код, который вы только что скопировали с сервера ЦС, в редактор. Когда вы закончите, сохраните и закройте файл.

Теперь, когда у вас есть копия файла ca.crt во второй системе Linux, пора импортировать сертификат в хранилище сертификатов данной операционной системы.

В системах на основе Debian и Ubuntu для импорта сертификата выполните следующие команды:

cp /tmp/ca.crt /usr/local/share/ca-certificates/update-ca-certificates

Чтобы импортировать сертификат в системы на основе CentOS, Fedora или RedHat, скопируйте сертификат в /etc/pki/ca-trust/source/anchors/ и запустите команду update-ca-trust.

sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/update-ca-trust

Теперь вторая ваша система Linux будет доверять сертификатам, подписанным вашим ЦС.

Примечание: Если вы используете свой ЦС для веб-серверов и работаете с браузером Firefox, вам необходимо импортировать публичный сертификат ca.crt прямо в Firefox. Браузер Firefox не использует хранилище сертификатов локальной операционной системы. Подробную информацию о том, как добавить сертификат ЦС в Firefox, вы найдете в этой статье от Mozilla.

Если вы используете свой ЦС для интеграции со средой Windows или настольными компьютерами, ознакомьтесь с документацией по использованию certutil.exe.

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

5: проверка автоматического обновления сертификата

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

Автоматическая настройка netplan

Linux серверы Serverspace призваны упрощать жизнь пользователей. В них присутствует функция настройки сетевых интерфейсов в автоматическом режиме при их добавлении в панели управления или во время создания сервера. Но для обеспечения работы маршрутизации на основе политик и как результат доступности сервера сразу по нескольким сетевым интерфейсам нам необходимо внести изменения в настройки Netplan.

Про сертификаты:  Как установить SSL сертификат на Nginx (Linux) | Облачный виртуальный хостинг CloudLite

Чтобы наши настройки не перезаписались во время перезагрузки, необходимо отключить автоматическую настройку сети. После того, как Вы убедитесь, что необходимое количество интерфейсов добавлено на сервер, создайте на нём файл:nano /etc/cloud/cloud.cfg.

Другие полезные команды openssl

Создание закрытого ключа:

openssl genrsa -des3 -out domain.key 2048

Создание запроса на основе имеющегося ключа:

openssl req -key domain.key -new -out domain.csr

Просмотр сертификата:

openssl req -text -noout -verify -in domain.csr

Генерация паролей с помощью openssl:

openssl rand -base64 9

Загрузка необходимых файлов на веб-сервер

Сначала следует загрузить файлы .ca и .crt на веб-сервер из панели 1cloud. Если ваш сервер не имеет графического окружения рабочего стола, вы можете загрузить эти файлы на другой компьютер, а затем перенести их одним из описанных ниже способов.

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

Запрос ssl сертификата в linux

После того как отредактировали файл создаем ключ и запрос в одной команде:

openssl req -newkey rsa:2048 -nodes -keyout domain.key -out domain.csr

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

Создание запроса ssl сертификата в Linux
Поле Common Name должно совпадать с именем хоста к которому вы выпускаете сертификат

Обратите внимание на поле Common Name такое же имя стоит прописать в конфиге выше в качестве одного из полей в alt_names.

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

openssl x509 -in domain.crt -signkey domain.key -x509toreq -out domain.csr

Как создать учетную запись пользователя

Давайте создадим учетную запись пользователя AD несколькими способами.

Как удалить учетную запись пользователя

Для того чтобы удалить пользователя из Active Directory, используйте один из следующих методов. Обратите внимание, что это не приведет к полному удалению УЗ, если у вас настроена корзина AD Recycle Bin.

Маршрутизация для несколько сетевых интерфейсов

Задача обеспечения доступности сервера через несколько сетевых подключений и IP адресов будет решена с использованием маршрутизации на основе политик, а именно на основе адреса отправителя. Таким образом, каждый пакет будет отправлен с сервера через тот же адрес, через который и попал на него. В первую очередь нужно создать таблицы маршрутизации для данной цели, а для этого нужен пакет iproute2. Если он отсутствует в системе, необходимо его установить:

apt-get install iproute2

nano /etc/iproute2/rt_tables

В его конец необходимо добавить столько таблиц, сколько сетевых интерфейсов настраивается. Одна таблица – это отдельная строка, состоящая из двух чисел, разделенных пробелом. Первое число – это приоритет, а второе – это имя таблицы. Например:

50 5051 5152 52

Таким образом, мы добавим 3 таблицы. Теперь пришло время добавить настройки маршрутизации в Netplan, откройте его конфиг по пути /etc/netplan/ с расширением .yaml (имя файла может отличаться в Вашей системе):

nano /etc/netplan/50-cloud-init.yaml

Netplan чувствителен к форматированию в файле конфигурации. Очень важно соблюсти правильное количество пробелов и не использовать табуляции, иначе результат не пройдёт проверку. Корректный пример приведен ниже. В нём показан блок настроек для одного интерфейса (enp0s5), такие же блоки Вы увидите в конфиге для каждого из подключений. В каждый из блоков надо добавить настройки routes и routing-policy, а остальные настройки оставить как есть. Расшифровка добавляемых значений:

  • to – IP подсети назначения любой – 0.0.0.0/0
  • via – IP шлюза текущего сетевого подключения
  • table – имя одной из добавленных в rt_tables таблиц. Должно совпадать в routes и routing-policy каждого подключения. Но для разных интерфейсов – разные таблицы.
  • from – IP адрес данного интерфейса
  • priority – можно не менять
network:
    version: 2
    ethernets:
        enp0s5:
            addresses:
            - 11.22.33.44/24
            gateway4: 11.22.33.1
            match:
                macaddress: 00:99:88:77:66:55
            mtu: 1500
            nameservers:
                addresses:
                - 8.8.8.8
                - 1.1.1.1
                - 8.8.4.4
                search: []
            set-name: enp0s5
            routes:
                - to: 0.0.0.0/0
                  via: 11.22.33.1
                  table: 50
            routing-policy:
                - from: 11.22.33.44
                  table: 50
                  priority: 300

После завершения редактирования конфигурации, убедимся в ее корректности:

netplan generate

Если вывод пустой, значит всё сделано верно. Если же есть ошибки, Вы увидите нечто подобное:

/etc/netplan/50-cloud-init.yaml:24:1: Invalid YAML: tabs are not allowed for indent:
		- to: 0.0.0.0/0
^

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

netplan apply

Теперь сервер будет доступен по всем настроенным таким образом IP адресам.

Настройка

Для того, чтобы сгенерировать сертификат, вам необходимо обладать root-правами на вашем сервере (в системе 1cloud такие права пользователи получают по-умолчанию). Кроме того, необходимо установить веб-сервер Apache (о том, как это сделать написано в нашей статье «Как установить LAMP-стек (Linux, Apache, MySqL, PHP) на сервере с Ubuntu»).

Если Apache еще не установлен на сервере, это можно сделать с помощью специальной команды:

sudo apt-get install apache2

Настройка source based routing

Проверим присутствует ли пакет iproute. Если нет, установите его.

dnf install iproute

Создадим новые таблицы для настройки политик маршрутизации.

nano /etc/iproute2/rt_tables

В конец файла добавим записи:

300 300301 301

Каждая строка – это новая таблица. Формат записи – приоритет пробел название таблицы. Данные значения должны быть уникальны относительно других записей в файле. Приоритет имеет числовое значение, а название таблицы может содержать и буквы. Добавьте столько новых таблиц, сколько интерфейсов Вы настраиваете.
В следующих файлах будут указаны настройки маршрутизации. Для каждого интерфейса нужно создать по паре файлов: rule-eth-name, route-eth-name, где eth-name заменить на имя интерфейса. Пример для интерфейса enp0s5:

nano /etc/sysconfig/network-scripts/rule-enp0s5

Вставляем в него следующую строку с актуальным IP адресом вместо 34.56.78.90 и именем таблицы, созданной на предыдущем шаге вместо 300:

from 34.56.78.90 lookup 300

nano /etc/sysconfig/network-scripts/route-enp0s5

Заменяем 34.56.78.0/24 на адрес своей подсети, enp0s5 – на имя интерфейса, 300 на название соответствующей таблицы, а 34.56.78.1 на шлюз для маршрутизации трафика и вставляем в открытый файл:

34.56.78.0/24 dev enp0s5 table 300default dev enp0s5 via 34.56.78.1 table 300

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

systemctl restart network

Настройка дополнительных полей ssl сертификата в linux

Первым делом необходимо настроить список и значения дополнительных полей в сертификате, а именно Subject Alternative Names. Указывать их необходимо, чтобы избежать ошибки [missing_subjectAltName] и NET::ERR_CERT_COMMON_NAME_INVALID в Google Chrome и других браузерах. В данных полях необходимо перечислить все dns имена и ip адреса, по которым может быть открыт сайт.

Задаются параметры через файл /etc/ssl/openssl.cnf. Если у вас данный конфигурационный файл не изменялся то необходимо внести следующие изменения:

  1. В разделе [req] добавить строку: req_extensions = v3_req
  2. В разделе [v3_req] добавить строку: subjectAltName = @alt_names
  3. Создать раздел [ alt_names ] и добавить в него все альтернативные имена в формате:

Немного о ssl-сертификатах

SSL-сертификаты используются для шифрования информация на сайте и создания безопасных соединений. Кроме того, такой сертификат может использоваться посетителями для получения информации о VPS-сервере, на котором запущен сайт. SSL-сертификаты могут выдаваться специальные сертификационными центрами, которые уполномочены проверять и подтверждать информацию о сервере, также существуют самоподписанные сертификаты, созданные владельцами сайтов, которые никто не «заверяет».

Отключение networkmanager

Настройку маршрутизации на основе политик мы будем осуществлять с помощью network-scripts, поэтому отключим NetworkManager и связанные службы:

systemctl mask NetworkManager.servicesystemctl stop NetworkManager.servicesystemctl mask NetworkManager-wait-online.servicesystemctl mask NetworkManager-dispatcher.service

Установим пакет network-scripts

dnf install network-scripts

systemctl enable networksystemctl start network

Отключение автонастройки netplan

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

Поэтому любые его изменения, сделанный в ручном режиме, будут потеряны. Чтобы этого избежать, можно отключить данную функцию. Для начала убедитесь, что Вы добавили необходимое количество сетевых адаптеров к серверу, а затем создайте файл:nano /etc/cloud/cloud.cfg.

Параметры сетевых интерфейсов

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

Откройте файл настроек сетевого интерфейса. Их имена можно посмотреть с помощью команды ip a или же задать новые, если они не настроены.

nano /etc/sysconfig/network-scripts/ifcfg-enp0s5

Конфигурацию ниже можно скопировать и заменить следующие значения на свои:

  • имя интерфейса (enp0s5)
  • шлюз (GATEWAY)
  • MAC-адрес (HWADDR)
  • IP адрес (IPADDR)
  • маска подсети (NETMASK)

BOOTPROTO=noneDEFROUTE=yesDEVICE=enp0s5GATEWAY=34.56.78.1HWADDR=99:88:77:66:55:44IPADDR=34.56.78.90MTU=1500NETMASK=255.255.255.0ONBOOT=yesSTARTMODE=autoTYPE=Ethernet

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

Про сертификаты:  Как настроить SSL-сертификат на Nginx – Помощь | REG.RU

Перенос сертификатов с компьютера linux/mac os:

Самый простой способ загрузки сертификатов на сервер – опция SCP, встроенная в возможность терминала вашего компьютера:

Повышение сервера до контроллера домена

После завершения установки роли, если вы не закроете окно, вам будет предложено повысить сервер до контроллера домена (DC). Ссылка будет выделена синим текстом.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В качестве альтернативы можно открыть то же окно через сервер менеджер, как показано на рисунке ниже.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

Нажмите на «Повысить роль этого сервера до уровня контроллера домена» (Promote server to domain controller). По сути, это мастер конфигурации развертывания Active Directory, который поможет вам создать первый лес в Active Directory.

В разделе «Конфигурация развертывания» (Deployment Configuration), включите опцию «Добавить новый лес» “Add a new forest”, а затем введите желаемое имя домена. В моем случае это office.local, и нажмите Next.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе «Параметры контроллера домена» (Domain Controller Options) выберите функциональный уровень леса и домена. Если это ваш первый лес на Windows Server 2021, оставьте значения по умолчанию. В противном случае, если в вашей бизнес-инфраструктуре есть другие контроллеры домена, вам следует узнать их функциональный уровень, прежде чем приступать к необходимым действиям.

Включите опцию сервера системы доменных имен (DNS), чтобы также установить роль DNS на том же сервере, если вы не сделали этого раньше.

Также введите (дважды) пароль Directory Services Restore Mode (DSRM), обязательно запишите его в документации и нажмите Next, чтобы продолжить.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В подразделе «Параметры DNS» (DNS Options) вы увидите предупреждающее сообщение, но в данный момент оно не должно вас беспокоить. Просто нажмите “Next”, чтобы продолжить.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе «Дополнительные параметры» (Additional Options) оставьте имя NetBIOS по умолчанию и нажмите Next, чтобы продолжить.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе «Пути» (Paths) выберите, где на вашем сервере будут располагаться папки NTDS, SYSVOL и LOG. В моем случае я оставлю значения по умолчанию, вы можете выбрать другой диск в зависимости от ваших предпочтений и настроек.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе «Просмотреть параметры» (Review Options) вы увидите сводку выбранных вами параметров. Убедившись, что вы не допустили ошибок, нажмите Next.

В разделе «Проверка предварительных требований» “Prerequisites Check” будут проверены предварительные условия. Здесь, если возникнет хотя бы одна ошибка, вы не сможете продолжить, и вам нужно будет ее исправить. В противном случае, если отображаются только предупреждающие сообщения (которые являются наиболее распространенными), но проверка прошла успешно, как показано на рисунке, нажмите кнопку Install, чтобы продолжить.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

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

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

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

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

Подпись ssl сертификата linux в доменном центре сертификации

Копируем содержимое csr файла в буфер, затем идем на веб сайт доменного центра сертификации.

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

В поле шаблон сертификата выбираем Веб-сервер и кликаем по кнопке «Выдать».

Скачивание ssl сертификата с сайта доменного центра сертификации
Переключаем формат сертификата в Base64

Кликаем по ссылке «Загрузить сертификат» и сохраняем файл сертификата. После этого его можно загрузить на сервер и настроить на использование вебсервером.

Поскольку доменный центр сертификации по умолчанию распространяет свой корневой сертификат на все машины в домене Active Directory, либо вы сделали это с помощью GPO, то все подписанные им сертификаты на машинах в домене будут валидными. Таким образом и SSL сертификат в Linux подписанный доменным центром сертификации прикрученный к внутрикорпоративному веб-серверу тоже не вызовет ошибок в браузере на рабочей машине пользователя.

Данная инструкция пригодится при выпуске сертификата например для установки на Proxmox Mail Gateway или любой другой веб-сервер.

Подпись запроса на сертификат

На предыдущем этапе вы создали пробный запрос сертификата и ключ. Вы скопировали его в каталог /tmp на своем сервере ЦС (такой же процесс вы бы использовали, если бы у вас были реальные клиенты или серверы, отправляющие вам CSR-запросы, которые необходимо подписать).

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

Поскольку на сервере ЦС доступна утилита easy-rsa, она будет использоваться на этапах подписания, чтобы упростить задачу (и не использовать openssl, как мы это делали в предыдущем разделе).

Первым делом для подписания запроса сертификата нужно импортировать этот запрос с помощью скрипта easy-rsa:

cd ~/easy-rsa./easyrsa import-req /tmp/8host-server.req 8host-server. . .The request has been successfully imported with a short name of: 8host-serverYou may now use this name to perform signing operations on this request.

Теперь вы можете подписать запрос, запустив скрипт easyrsa с параметром sign-req, за которым указывается тип запроса и значение Common Name, включенное в запрос. Запрос может использовать один из следующих типов: client, server или ca. Поскольку наш тестовый сертификат предназначен для вымышленного сервера, используйте тип server.

./easyrsa sign-req server 8host-server

В выводе вам будет предложено подтвердить, что запрос поступил из надежного источника. Введите yes, затем нажмите Enter:

You are about to sign the following certificate.Please check over the details shown below for accuracy. Note that this requesthas not been cryptographically verified. Please be sure it came from a trustedsource or that you have verified the request checksum with the sender.

Request subject, to be signed as a server certificate for 3650 days:subject=commonName                = 8host-serverType the word ‘yes’ to continue, or any other input to abort.Confirm request details: yes. . .Certificate created at: /home/8host/easy-rsa/pki/issued/8host-server.crt

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

Итак, вы подписали запрос сертификата 8host-server.req, используя закрытый ключ сервера ЦС из файла /home/8host/easy-rsa/pki/private/ca.key. Полученный файл 8host-server.crt содержит открытый ключ шифрования для нашего условного сервера, а также новую подпись от сервера ЦС.

Если бы этот запрос относился к реальному серверу (например, к веб- или VPN-серверу), сервер ЦС должен был бы передать новые файлы 8host-server.crt и ca.crt на удаленный сервер, который сделал запрос сертификата:

scp pki/issued/8host-server.crt 8host@your_server_ip:/tmpscp pki/ca.crt 8host@your_server_ip:/tmp

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

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

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

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

Следующие действия нужно выполнять на вашей второй системе (Linux Debian, Ubuntu или дистрибутиве, который является производным от любой из этих систем). Это может быть другой удаленный сервер или локальная машина Linux – например, ноутбук или компьютер.

Пакет openssl по умолчанию предустановлен в большинстве дистрибутивов Linux, но если вы не уверены в этом, запустите такую команду:

sudo apt updatesudo apt install openssl

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

Первое, что необходимо сделать для создания CSR, – это создать закрытый ключ с помощью openssl. Давайте создадим каталог practice-csr, а затем сгенерируем в нем ключ. Мы создадим этот запрос для условного сервера 8host-server (не для идентификации пользователя или другого ЦС).

mkdir ~/practice-csrcd ~/practice-csropenssl genrsa -out 8host-server.keyGenerating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)

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

openssl req -new -key 8host-server.key -out 8host-server.req. . .—–Country Name (2 letter code) [XX]:USState or Province Name (full name) []:New YorkLocality Name (eg, city) [Default City]:New York CityOrganization Name (eg, company)

[Default Company Ltd]:MyOrganizationOrganizational Unit Name (eg, section) []:CommunityCommon Name (eg, your name or your server’s hostname) []:8host-serverEmail Address []:Please enter the following ‘extra’ attributesto be sent with your certificate requestA challenge password []:An optional company name []:

Если вы хотите автоматически добавить эти значения прямо в вызов команды openssl (чтобы не вводить их через интерактивные окна), передайте аргумент -subj. Обязательно отредактируйте условные значения, указав вместо них свои.

openssl req -new -key 8host-server.key -out server.req -subj /C=US/ST=New York/L=New York City/O=MyOrganization/OU=Community/CN=8host-server

Чтобы проверить содержимое вашего запроса, вы можете просмотреть файл запроса:

openssl req -in 8host-server.req -noout -subjectsubject=C = US, ST = New York, L = New York City, O = MyOrganization, OU = Community, CN = 8host-server

Про сертификаты:  Создание самоподписанного SSL-сертификата для Apache в Ubuntu

Если вы довольны вашим тестовым запросом на сертификат, скопируйте файл 8host-server.req на свой сервер ЦС, используя утилиту scp:

scp 8host-server.req 8host@your_ca_server_ip:/tmp/8host-server.req

Вы создали запрос на подпись сертификата для условного сервера 8host-server. В реальном сценарии запрос может быть предназначен для промежуточного веб-сервера или сервера разработки, который нуждается в TLS сертификате для целей тестирования. Также запрос может исходить от сервера OpenVPN, которому нужен сертификат, чтобы пользователи могли подключаться к VPN. Далее мы перейдем к подписанию запроса с помощью закрытого ключа сервера ЦС.

Создание учетной записи пользователя с помощью windows powershell

Запустите следующий код PowerShell с правами администратора:

Требования

Вам понадобится сервер Ubuntu 20.04 для обслуживания сервиса OpenVPN (этот сервер будет называться сервером ЦС). Настройте этот сервер по этому мануалу.

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

Удаление учетной записи пользователя с помощью windows powershell

Используйте следующий PowerShell код для удаления пользователя из AD, синтаксис для примера использован такой же, как и в примере выше:

Установка корневого сертификата на сервере (ubuntu)

Прежде всего сохраните сертификат в base64 формате. Сделать это можно при экспорте из консоли управления сертификатами в windows либо с помощью команды:

openssl x509 -outform der -in CAroot.pem -out CAroot.crt 

Обратите внимание, что расширение файла в base64 формате обязательно должно быть crt. Затем необходимо скопировать файл в папку /usr/local/share/ca-certificates

sudo cp CAroot.crt /usr/local/share/ca-certificates

И обновить список сертификатов в системе с помощью команды:

sudo update-ca-certificates

Установка роли active directory domain services

Прежде чем приступить к выполнению этого шага, необходимо настроить на сервере статический IP-адрес, а также изменить имя Windows Server в соответствии со стандартами именования вашей компании. После того как сделаете это, приступайте к установке ADDS.

Откройте управление сервером (Server Manager), нажмите Управление (Manage), а затем  «Добавить роли и компоненты» (Add Roles and Features).

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

Сразу после этого откроется окно мастера. В разделе “Before You Begin” нажмите “Next”, чтобы продолжить.

В разделе «Тип установки»  (Installation Type) выберите установку на основе ролей сервера или на основе функции виртуальной инфраструктуры и нажмите Next, чтобы продолжить. В нашем случае используем первый вариант.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе «Выбор сервера» (Server selection) убедитесь, что выбран нужный сервер, обычно он выделен по умолчанию и нажмите Next.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе «Роли сервера» (Server Roles) выберите Доменные службы Active Directory (Active Directory Domain Services). После этого вам будет предложено добавить некоторые дополнительные функции. Нажмите кнопку Add Features, а затем нажмите Next, чтобы продолжить.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе «Компоненты» (“Features”) вам не нужно ничего выбирать, просто нажмите Next для продолжения.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

В разделе AD DS отображается некоторая информация о AD DS, просто нажмите Next.

Наконец, в разделе «Подтверждение» (“Confirmation”) нажмите кнопку Install, чтобы перейти к установке роли.

Установка и настройка центра сертификации в Ubuntu 20.04 | 8HOST.COM

Шаг #1: активация модуля ssl

Затем нужно активировать модуль SSL на сервере:

sudo a2enmod ssl

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

sudo service apache2 restart

Шаг #2: создание новой директории

Нужно создать новую директорию (то есть папку), где будут хранится ключ сервера и сам сертификат:

sudo mkdir /etc/apache2/ssl

Шаг #4: установка сертификата

После того, как проделаны все подготовительные процедуры, необходимо сконфигурировать виртуальные хосты для отображения сертификата. Для этого в текстовом редакторе нужно открыть конфигурационный файл SSL:

nano /etc/apache2/sites-available/default-ssl

Здесь в секции, начинающейся со слов <virtualhost _default_:443=””>, нужно дописать строку с именем сервера (ServerName):

Шаг #5: активация нового виртуального хоста

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

sudo a2ensite default-ssl

После этого нужно перезагрузить Apache:

sudo service apache2 reload

Шаг 1. установка пакета «let’s encrypt»

Процесс установки пакета «Let’s Encrypt» со всеми его зависимостями предельно прост – достаточно ввести команду:

sudo apt install letsencrypt

Опционально: создание запросов на подпись и отзыв сертификатов

Следующие разделы данного мануала выполнять не обязательно. Если вы выполнили все предыдущие разделы, у вас уже есть полностью готовый центр сертификации, который можно использовать (например, в качестве основы для выполнения других мануалов). Вы можете импортировать файл ca.crt вашего ЦС и проверить сертификаты, которые были им подписаны.

Отзыв сертификата

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

Общий процесс отзыва сертификата состоит из таких этапов:

  1. Отзыв сертификата с помощью команды ./easyrsa revoke client_name.
  2. Создание нового запроса на сертификат с помощью команды ./easyrsa gen-crl.
  3. Перенос обновленного файла crl.pem на сервер или серверы, которые зависят от вашего ЦС; копирование файла в требуемый каталог или каталоги в этих системах для программ, которые к нему обращаются.
  4. Перезапуск всех сервисов, которые используют ваш ЦС и файл запроса.

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

Чтобы отозвать сертификат, перейдите в каталог easy-rsa на вашем сервере ЦС:

cd ~/easy-rsa

Затем запустите скрипт easyrsa с опцией revoke, после нее укажите имя клиента, сертификат которого вы хотите отозвать. Следуя нашему примеру, Common Name сертификата – это 8host-server:

./easyrsa revoke 8host-server

Команда попросит вас подтвердить отзыв, введя yes:

Please confirm you wish to revoke the certificate with the following subject:subject=commonName                = 8host-serverType the word ‘yes’ to continue, or any other input to abort.Continue with revocation: yes. . .Revoking Certificate 8348B3F146A765581946040D5C4D590A. . .

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

После подтверждения действия ЦС отзовет сертификат. Однако удаленные системы, которые используют ваш ЦС, не могут проверить, были ли отозваны какие-либо сертификаты. Пользователи и серверы по-прежнему смогут использовать отозванный сертификат до тех пор, пока список отзыва сертификатов ЦС (Certificate Revocation List, CRL) не будет распространен на все системы, использующие ваш ЦС.

Давайте создадим CRL или обновим существующий файл crl.pem.

Обновив список отзыва, вы сможете указать, какие пользователи и системы имеют действительные сертификаты в вашем ЦС.

Чтобы создать CRL, запустите команду easy-rsa с параметром gen-crl, находясь в каталоге ~/easy-rsa:

./easyrsa gen-crl

Если при создании файла ca.key вы использовали парольную фразу, вам будет предложено ввести ее. Команда gen-crl создаст файл crl.pem, содержащий обновленный список отозванных сертификатов для этого ЦС.

Затем вам нужно будет передать обновленный файл crl.pem на все серверы и клиенты, которые используют ваш ЦС. В противном случае клиенты и системы будут по-прежнему иметь доступ к сервисам и системам, которые используют ваш ЦС, поскольку они не будут знать об аннулированном статусе сертификата.

Чтобы передать файл на серверы, которые доверяют вашему ЦС, вы можете использовать команду scp.

Примечание: В этом мануале показано, как создавать и распространять CRL вручную. Но существуют и более надежные, автоматизированные методы для распространения и проверки списков отзыва, например OCSP-Stapling.

Убедитесь, что вы вошли на сервер ЦС как пользователь sudo, и запустите следующую команду, указав свой IP-адрес или DNS-имя своего сервера вместо your_server_ip:

scp ~/easy-rsa/pki/crl.pem 8host@your_server_ip:/tmp

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

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

Если вы хотите проверить файл CRL (например, чтобы просмотреть список отозванных сертификатов), используйте следующую команду openssl в каталоге easy-rsa на вашем сервере ЦС:

cd ~/easy-rsaopenssl crl -in pki/crl.pem -noout -text

Вы также можете запустить эту команду на любом сервере или системе, где установлен инструмент openssl с копией файла crl.pem. Например, если вы перенесли файл crl.pem в вашу вторую систему и хотите убедиться, что сертификат 8host-server отозван, вы можете использовать команду openssl, как показано ниже (но укажите свой серийный номер отзыва сертификата):

openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590ASerial Number: 8348B3F146A765581946040D5C4D590ARevocation Date: Apr  1 20:48:02 2020 GMT

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

Оцените статью
Мой сертификат
Добавить комментарий