- Что означает красный цвет
- 2: подготовка инфраструктуры открытых ключей
- 3: создание центра сертификации
- 4: распространение открытого сертификата цс
- Загрузка необходимых файлов на веб-сервер
- Изменение файла виртуального хоста apache ssl по умолчанию
- Как добавить сертификат центра сертификации (ca) в доверенные в linux – записная книжка инженера программиста
- Перенос сертификатов с компьютера linux/mac os:
- Подпись запроса на сертификат
- Предварительные требования
- Создание и подпись запроса на сертификат
- Создание сниппета конфигурации apache с надежными настройками шифрования
- Требования
- Шаг #1: активация модуля ssl
- Шаг #2: создание новой директории
- Шаг #3: создание самоподписанного ssl-сертификата
- Шаг #4: установка сертификата
- Шаг #5: активация нового виртуального хоста
- Шаг 2 — настройка apache для использования ssl
- Шаг 3 — настройка брандмауэра
- Шаг 4 — активация изменений в apache
- Шаг 5 — тестирование шифрования
- Шаг 6 – переключение на постоянное перенаправление
- Заключение
- Опционально: создание запросов на подпись и отзыв сертификатов
- Отзыв сертификата
Что означает красный цвет
В этом руководстве мы будем выделять красным цветом те места, в которых пользователю нужно будет ввести какие-либо данные или внести какие-то изменения. В остальном, предложенные команды можно просто скопировать и вставить в командную строку терминала.
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.
Если вы знаете, как подписывать и отзывать сертификаты, вы уже можете закончить работу с мануалом. Если же вы хотите научиться подписывать и отзывать сертификаты, далее мы подробно опишем каждый процесс.
Загрузка необходимых файлов на веб-сервер
Прежде всего, необходимо загрузить представленные в панели 1cloud файлы .ca и .crt на веб-сервер. Если ваш сервер не имеет графического окружения рабочего стола, вы можете загрузить эти файлы на другой компьютер, а затем перенести их одним из приведенных ниже способов.
Примечание: подразумевается, что необходимая для работы пара закрытый/открытый ключ была сгенерирована на том же веб-сервере, на который вы будете переносить приобретенный сертификат. Если вы создавали ключи на другой машине, вам необходимо также перенести файл закрытого ключа .key на ваш веб-сервер по аналогии с описанной ниже процедурой копирования файлов сертификатов.
Изменение файла виртуального хоста apache ssl по умолчанию
Теперь изменим /etc/apache2/sites-available/sl.conf, используемый по умолчанию файл виртуального хоста Apache SSL. Если вы используете другой файл серверных блоков, используйте имя этого файла в приведенных ниже командах.
Прежде чем продолжить, создадим резервную копию первоначального файла виртуального хоста SSL:
Теперь откройте файл виртуального хоста SSL для внесения изменений:
С удалением большинства комментариев содержание файла виртуального хоста по умолчанию должно выглядеть примерно так:
/etc/apache2/sites-available/default-ssl.conf
Как добавить сертификат центра сертификации (ca) в доверенные в linux – записная книжка инженера программиста
Добавление доверенные корневые центры сертификации в командной строке.
Суть метода очень проста:
- Добавить свой корневой CA сертификат в папку, предназначенную для таких сертификатов.
- Запустить программу для обновления общесистемного списка сертификатов.
Пути и команды в разных дистрибутивах Linux чуть различаются. Для (Debian, Ubuntu) и их производных.
Просмотреть Subject всех корневых CA сертификатов можно командой:
Для демонстрации я добавлю сертификат с Common Name, включающим «HackWare», тогда для проверки, имеется ли сертификат с таким именем среди корневых CA, я могу использовать команду:
Для добавления своего корневого CA в доверенные в Debian, Kali Linux, Linux Mint, Ubuntu и их производных:
1. Проверьте, существует ли директория /usr/local/share/ca-certificates:
Если её ещё нет, то создайте:
Сертификат должен быть в формате PEM (обычно так и есть) и иметь расширение .crt — если расширение вашего сертификата .pem, то достаточно просто поменять на .crt.
2. Скопируйте ваш сертификат командой вида:
3. Запустите следующую команду для обновления общесистемного списка:
Пример вывода:
Либо запустить добавление в интерактивном режиме
Проверим наличие нашего CA сертификата среди доверенных:
Сертификат успешно найден:

Чтобы его удалить:
Для добавления своего корневого CA в доверенные в Arch Linux, BlackArch и их производных:
1. Выполните команду вида:
2. Обновите общесистемный список доверенных CA:
Чтобы удалить этот сертификат:
Перенос сертификатов с компьютера linux/mac os:
Самый простой способ загрузки сертификатов на сервер – опция SCP, встроенная в возможность терминала вашего компьютера:
Подпись запроса на сертификат
На предыдущем этапе вы создали пробный запрос сертификата и ключ. Вы скопировали его в каталог /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, инструментами управления конфигурацией, системами баз данных или для аутентификации клиента.
Предварительные требования
Для начала у вас должен быть пользователь без прав root с привилегиями sudo. Чтобы создать такую учетную запись пользователя, следуйте указаниям руководства «Начальная настройка сервера с Ubuntu 18.04».
Также вам потребуется установить веб-сервер Apache. Если вы хотите установить на сервере полный комплект LAMP (Linux, Apache, MySQL, PHP), следуйте указаниям обучающего модуля «Установка LAMP в Ubuntu 18.04». Если вы хотите просто установить веб-сервер Apache, пропустите шаги, относящиеся к установке PHP и MySQL.
Когда предварительные требования будут выполнены, переходите к приведенным ниже шагам.
Создание и подпись запроса на сертификат
Теперь, когда у вас есть готовый центр сертификации, вы можете попрактиковаться в создании секретного ключа и запроса сертификата, чтобы ознакомиться с процессами подписания и распространения.
Запрос на подпись сертификата (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
Если вы довольны вашим тестовым запросом на сертификат, скопируйте файл 8host-server.req на свой сервер ЦС, используя утилиту scp:
scp 8host-server.req 8host@your_ca_server_ip:/tmp/8host-server.req
Вы создали запрос на подпись сертификата для условного сервера 8host-server. В реальном сценарии запрос может быть предназначен для промежуточного веб-сервера или сервера разработки, который нуждается в TLS сертификате для целей тестирования. Также запрос может исходить от сервера OpenVPN, которому нужен сертификат, чтобы пользователи могли подключаться к VPN. Далее мы перейдем к подписанию запроса с помощью закрытого ключа сервера ЦС.
Создание сниппета конфигурации apache с надежными настройками шифрования
Прежде всего, мы создадим сниппет конфигурации Apache для определения некоторых параметров SSL. При этом в Apache будет настроен надежный пакет шифров SSL и будут включены расширенные функции, которые обеспечат безопасность нашего сервера. Настраиваемые нами параметры смогут использовать любые виртуальные хосты с SSL.
Создайте новый сниппет в каталоге /etc/apache2/conf-available. Мы назовем файл ssl-params.conf, чтобы сделать его назначение очевидным:
Для безопасной настройки Apache SSL мы используем рекомендации Реми ван Эльста на сайте Cipherli.st. Этот сайт создан для предоставления удобных настроек шифрования для популярного программного обеспечения.
Рекомендованные настройки на вышеуказанном сайте обеспечивают высокий уровень безопасности. Иногда это достигается за счет совместимости клиентских систем. Если вам требуется поддержка старых версий клиентов, вы можете использовать альтернативный список, нажав на странице ссылку «Да, мне нужны настройки шифрования для устаревшего / старого программного обеспечения». Этот список можно заменить для копируемых ниже элементов.
Выбор конфигурации в основном зависит от того, какие системы вам нужно поддерживать. Оба варианта обеспечивают высокий уровень безопасности.
Для наших целей мы скопируем предоставленные настройки полностью. Мы внесем только одно небольшое изменение. Мы отключим заголовок Strict-Transport-Security (HSTS).
Предварительная загрузка HSTS повышает безопасность, но может иметь далеко идущие последствия, если ее включить случайно или неправильно. В этом обучающем модуле мы не будем включать настройки, но вы можете изменить их, если понимаете возможные последствия.
Требования
Вам понадобится сервер Ubuntu 20.04 для обслуживания сервиса OpenVPN (этот сервер будет называться сервером ЦС). Настройте этот сервер по этому мануалу.
Сервер ЦС должен быть автономным. Он будет использоваться только для импорта, подписи и отзыва запросов на сертификат. Он не должен запускать какие-либо другие сервисы, в идеале он должен быть отключен, если вы не используете ЦС.
Шаг #1: активация модуля ssl
Затем нужно активировать модуль SSL на сервере:
sudo a2enmod ssl
И перезапустить Apache, чтобы изменения вступили в силу:
sudo service apache2 restart
Шаг #2: создание новой директории
Нужно создать новую директорию (то есть папку), где будут хранится ключ сервера и сам сертификат:
sudo mkdir /etc/apache2/ssl
Шаг #3: создание самоподписанного ssl-сертификата
При «заказе» сертификата можно установить срок, в течение которого он должен оставаться действующим (число 365 в запросе можно поменять на любое другое). Мы создадим сертификат, который будет действителен в течение одного года:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
С помощью этой команды запускается создание самоподписанного SSL-сертификата, а также серверного ключа для его защиты. Оба этих фала будут храниться в ранее созданной директории.
В процессе создания сертификата система будет задавать вопросы, на которые нужно будет ответить.
Самое важное поле “Common Name” — здесь нужно вбить доменное имя сайта, если у него еще нет домена (или его использование не предполагается), можно вбить IP-адрес.
Шаг #4: установка сертификата
После того, как проделаны все подготовительные процедуры, необходимо сконфигурировать виртуальные хосты для отображения сертификата. Для этого в текстовом редакторе нужно открыть конфигурационный файл SSL:
nano /etc/apache2/sites-available/default-ssl
Здесь в секции, начинающейся со слов <virtualhost _default_:443=””>, нужно дописать строку с именем сервера (ServerName):
Шаг #5: активация нового виртуального хоста
Прежде чем активировать сайт на 443 порте, нужно включить соответствующий виртуальный хост:
sudo a2ensite default-ssl
После этого нужно перезагрузить Apache:
sudo service apache2 reload
Шаг 2 — настройка apache для использования ssl
Мы создали файлы ключа и сертификата в каталоге /etc/ssl. Теперь нам просто нужно изменить конфигурацию Apache, чтобы воспользоваться их преимуществами.
Внесем несколько небольших изменений в нашу конфигурацию:
- Создадим сниппет конфигурации, чтобы задать надежные параметры SSL по умолчанию.
- Мы изменим входящий в комплект файл виртуального хоста SSL Apache, чтобы он указывал на сгенерированные нами сертификаты SSL.
- (Рекомендуется) Мы изменим незашифрованный файл виртуального хоста, чтобы он автоматически перенаправлял запросы на шифрованный виртуальный хост.
После завершения настройки мы получим защищенную конфигурацию SSL.
Шаг 3 — настройка брандмауэра
Если у вас включен брандмаэр ufw в соответствии с предварительными требованиями, вам может потребоваться изменить настройки для поддержки трафика SSL . К счастью, Apache регистрирует несколько профилей ufw после установки.
Мы можем просмотреть доступные профили с помощью следующей команды:
Список должен выглядеть примерно так:
Output
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Вы можете просмотреть текущие настройки с помощью следующей команды:
Шаг 4 — активация изменений в apache
Мы внесли изменения и настроили брандмауэр, и теперь можем включить в Apache модули SSL и заголовков, активировать наш виртуальный хост SSL и перезапустить Apache.
Мы можем активровать mod_ssl, модуль Apache SSL, и модуль mod_headers, необходимый для некоторых настроек нашего сниппета SSL, с помощью команды a2enmod:
Теперь мы можем активировать виртуальный хост SSL с помощью команды a2ensite:
Также нам нужно будет активировать файл ssl-params.conf для считывания заданных значений:
Мы активировали наш сайт и все необходимые модули. Теперь нам нужно проверить наши файлы на наличие ошибок в синтаксисе. Для этого можно ввести следующую команду:
Если проверка будет успешно пройдена, мы получим результат, выглядящий примерно так:
Output
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Первая строка — это сообщение о том, что директива ServerName не задана глобально. Если вы хотите избавиться от этого сообщения, вы можете задать для ServerName доменное имя вашего сервера или IP-адрес в каталоге /etc/apache2/apache2.conf. Это необязательно, потому что данное сообщение не наносит никакого вреда.
Если в результатах есть сообщение Syntax OK, в вашей конфигурации нет синтаксических ошибок. Мы можем безопасно перезапустить Apache для внесения изменений:
Шаг 5 — тестирование шифрования
Теперь мы готовы протестировать наш сервер SSL.
Шаг 6 – переключение на постоянное перенаправление
Если перенаправление работает правильно, и вы хотите разрешить только шифрованный трафик, вам следует снова изменить файл нешифрованного виртуального хоста Apache и сделать перенаправление постоянным.
Откройте файл конфигурации серверного блока еще раз:
Найдите добавленную нами строку Redirect. Добавьте в эту строку атрибут permanent, который изменяет тип перенаправления с временного перенаправления 302 на постоянное перенаправление 301:
/etc/apache2/sites-available/000-default.conf
Заключение
В этом мануале вы научились создавать частный центр сертификации на автономном сервере Ubuntu 20.04 с помощью пакета Easy-RSA. Вы также узнали, как работает модель доверия между сторонами, которые используют ваш ЦС. Вы создали и подписали запрос на сертификат (CSR) для условного сервера, а затем научились отзывать сертификаты.
Теперь вы можете выдавать сертификаты пользователям и использовать их с такими сервисами, как OpenVPN. Также ваш ЦС можно использовать для защиты веб-серверов промежуточной среды и среды разработки. В разработке сертификаты TLS могут обеспечить максимально возможное соответствие кода и рабочих сред.
Опционально: создание запросов на подпись и отзыв сертификатов
Следующие разделы данного мануала выполнять не обязательно. Если вы выполнили все предыдущие разделы, у вас уже есть полностью готовый центр сертификации, который можно использовать (например, в качестве основы для выполнения других мануалов). Вы можете импортировать файл ca.crt вашего ЦС и проверить сертификаты, которые были им подписаны.
Отзыв сертификата
У вас может возникнуть потребность отозвать подписанный сертификат, чтобы пользователь или сервер больше не могли его использовать: например, если ноутбук, для которого вы подписали сертификат, был украден, веб-сервер с вашим сертификатом взломали, сотрудник покинул вашу организацию и так далее.
Общий процесс отзыва сертификата состоит из таких этапов:
- Отзыв сертификата с помощью команды ./easyrsa revoke client_name.
- Создание нового запроса на сертификат с помощью команды ./easyrsa gen-crl.
- Перенос обновленного файла crl.pem на сервер или серверы, которые зависят от вашего ЦС; копирование файла в требуемый каталог или каталоги в этих системах для программ, которые к нему обращаются.
- Перезапуск всех сервисов, которые используют ваш ЦС и файл запроса.
Вы можете использовать этот процесс для отзыва любых ранее выданных сертификатов. Ниже мы подробно рассмотрим каждый шаг, начиная с команды 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 используется для проверки уникального серийного номера, который вы получили при отзыве. Теперь вы можете проверить свой список отозванных сертификатов в любой системе, которая использует его для ограничения доступа пользователей и сервисов.
