Поиск по сайту:

Как установить и настроить центр сертификации (ЦС) в Debian 11


Введение

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

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

Некоторыми примерами программ в Linux, использующих собственный частный ЦС, являются Puppet. Вы также можете настроить свой веб-сервер на использование сертификатов, выданных частным ЦС, чтобы среда разработки и промежуточная среда соответствовала производственным серверам, использующим TLS для шифрования соединений.

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

Предпосылки

Для выполнения этого урока вам понадобятся:

  • Сервер Debian 11, который будет вашим выделенным сервером ЦС. Он будет использоваться только для импорта, подписи и отзыва запросов на сертификаты. Не используйте уже существующий сервер, на котором размещены общедоступные службы. В идеале ваш сервер ЦС должен быть отключен или отключен от сети, когда он не используется, чтобы его закрытый ключ не был так уязвим для компрометации.
  • Пользователь без полномочий root с правами sudo. Следуйте нашему руководству по начальной настройке сервера Debian 11, чтобы настроить это. В связанном руководстве также будет установлен брандмауэр, который предполагается использовать в этом руководстве.

Примечание. Последний раздел этого руководства является необязательным, если вы хотите узнать о подписании и отзыве сертификатов. Если вы решите выполнить эти практические шаги, вам понадобится второй сервер Debian 11, или вы также можете использовать свой собственный локальный компьютер с Linux, работающий под управлением Debian или Ubuntu, или дистрибутивов, производных от любого из них.

Шаг 1 — Установка Easy-RSA

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

Войдите на свой CA Server как пользователь sudo без полномочий root, которого вы создали на начальных этапах настройки, и выполните следующее:

  1. sudo apt update
  2. sudo apt install easy-rsa

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

На данный момент у вас есть все необходимое, настроенное и готовое к использованию Easy-RSA. На следующем шаге вы создадите инфраструктуру открытых ключей, а затем начнете создавать центр сертификации.

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

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

  1. mkdir ~/easy-rsa

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

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

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

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

Чтобы ограничить доступ к вашему новому каталогу PKI, убедитесь, что только владелец может получить к нему доступ с помощью команды chmod:

  1. chmod 700 /home/sammy/easy-rsa

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

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

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

Шаг 3 — Создание центра сертификации

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

  1. cd ~/easy-rsa
  2. nano vars

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

~/easy-rsa/vars
set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "NewYork" set_var EASYRSA_REQ_CITY "New York City" set_var EASYRSA_REQ_ORG "DigitalOcean" set_var EASYRSA_REQ_EMAIL "admin@example.com" set_var EASYRSA_REQ_OU "Community" set_var EASYRSA_ALGO "ec" set_var EASYRSA_DIGEST "sha512"

Когда вы закончите, сохраните и закройте файл. Если вы используете nano, вы можете сделать это, нажав CTRL+X, затем Y и ENTER для подтверждения. Теперь вы готовы построить ЦС.

Чтобы создать корневую пару открытого и закрытого ключей для вашего центра сертификации, снова запустите команду ./easy-rsa, на этот раз с параметром build-ca:

  1. ./easyrsa build-ca

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

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

Output
. . . Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: . . . Common Name (eg: your user, host, or server name) [Easy-RSA CA]: CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /home/sammy/easy-rsa/pki/ca.crt

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

  1. ./easyrsa build-ca nopass

Теперь у вас есть два важных файла — ~/easy-rsa/pki/ca.crt и ~/easy-rsa/pki/private/ca.key, которые составляют общедоступные и частные компоненты центра сертификации.

  • ca.crt — это общедоступный файл сертификата ЦС. Пользователи, серверы и клиенты будут использовать этот сертификат, чтобы убедиться, что они являются частью одной и той же сети доверия. Каждый пользователь и сервер, использующие ваш ЦС, должны иметь копию этого файла. Все стороны будут полагаться на общедоступный сертификат, чтобы гарантировать, что кто-то не выдает себя за систему и не выполняет атаку «человек посередине».
  • ca.key — это закрытый ключ, который ЦС использует для подписи сертификатов для серверов и клиентов. Если злоумышленник получит доступ к вашему ЦС и, в свою очередь, к вашему файлу ca.key, вам потребуется уничтожить ваш ЦС. Вот почему ваш файл ca.key должен находиться только на вашем компьютере ЦС и почему, в идеале, ваш компьютер ЦС должен оставаться в автономном режиме, когда вы не подписываете запросы на сертификат, в качестве дополнительной меры безопасности.

После этого ваш ЦС готов к использованию для подписания запросов на сертификаты и отзыва сертификатов.

Шаг 4 — Распространение общедоступного сертификата вашего центра сертификации

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

Чтобы импортировать общедоступный сертификат центра сертификации во вторую систему Linux, например, на другой сервер или локальный компьютер, сначала получите копию файла ca.crt с вашего сервера центра сертификации. Вы можете использовать команду cat, чтобы вывести его в терминал, а затем скопировать и вставить в файл на втором компьютере, который импортирует сертификат. Вы также можете использовать такой инструмент, как scp или rsync, для передачи файла между системами. На этом шаге мы будем использовать копирование и вставку с nano, так как он будет работать на всех системах.

Как пользователь без полномочий root на CA Server выполните следующую команду:

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

В вашем терминале будет вывод, похожий на следующий:

Output
-----BEGIN CERTIFICATE----- MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQEL BQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw . . . . . . -----END CERTIFICATE-----

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

Во второй системе Linux используйте nano или предпочитаемый вами текстовый редактор, чтобы открыть файл с именем /tmp/ca.crt:

  1. nano /tmp/ca.crt

Вставьте содержимое, которое вы только что скопировали с CA Server, в редактор. Когда вы закончите, сохраните и закройте файл. Если вы используете nano, вы можете сделать это, нажав CTRL+X, затем Y и ENTER для подтверждения .

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

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

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

Сценарий update-ca-certificates, расположенный в /usr/sbin/update-ca-certificates в более поздних версиях систем Debian и Ubuntu, может отсутствовать в вашего пользователя. ПУТЬ. Либо добавьте /usr/sbin в свой PATH, либо просто запустите /usr/sbin/update-ca-certificates.

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

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

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

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

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

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

Шаг 5 — Создание запросов на подпись сертификата и отзыв сертификатов (необязательно)

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

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

Шаг 6 — Создание и подписание запроса на сертификат практики (необязательно)

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

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

Следующие шаги будут выполняться на вашей второй системе Linux с Debian, Ubuntu или дистрибутивом, производным от любого из них. Это может быть другой удаленный сервер или локальная машина с Linux, например ноутбук или настольный компьютер. Поскольку easy-rsa по умолчанию доступен не во всех системах, мы будем использовать инструмент openssl для создания практического закрытого ключа и сертификата.

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

  1. sudo apt update
  2. sudo apt install openssl

Когда вам будет предложено установить openssl, нажмите y, чтобы продолжить установку. Это может обновить ваши библиотеки OpenSSL, и вам может быть предложено перезапустить некоторые службы, использующие старую библиотеку OpenSSL. Выберите OK, чтобы перезапустить эти службы, если хотите.

Теперь вы готовы создать учебную CSR с помощью openssl.

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

  1. mkdir ~/practice-csr
  2. cd ~/practice-csr
  3. openssl genrsa -out sammy-server.key
Output
Generating RSA private key, 2048 bit long modulus (2 primes) . . . . . . e is 65537 (0x010001)

Теперь, когда у вас есть закрытый ключ, вы можете создать соответствующий CSR, снова используя утилиту openssl. Вам будет предложено заполнить ряд полей, таких как Страна, Штат и Город. Вы можете ввести ., если хотите оставить поле пустым, но имейте в виду, что если бы это был настоящий CSR, лучше использовать правильные значения для вашего местоположения и организации. Однако не оставляйте поле Common Name (CN) пустым, так как это поле является обязательным, и ваш ЦС не сможет подписать сертификат без него:

  1. openssl req -new -key sammy-server.key -out sammy-server.req
Output
. . . ----- Country Name (2 letter code) [XX]:US State or Province Name (full name) []:New York Locality Name (eg, city) [Default City]:New York City Organization Name (eg, company) [Default Company Ltd]:DigitalOcean Organizational Unit Name (eg, section) []:Community Common Name (eg, your name or your server's hostname) []:sammy-server Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:

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

  1. openssl req -new -key sammy-server.key -out server.req -subj \
  2. /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server

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

  1. openssl req -in sammy-server.req -noout -subject
Output
subject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

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

  1. scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

На этом шаге вы сгенерировали запрос на подпись сертификата для вымышленного сервера с именем sammy-server. В реальном сценарии запрос может исходить от промежуточного веб-сервера или веб-сервера разработки, которому для тестирования требуется сертификат TLS; или он может исходить от сервера OpenVPN, который запрашивает сертификат, чтобы пользователи могли подключаться к VPN. На следующем шаге мы приступим к подписанию запроса на подпись сертификата с использованием закрытого ключа CA Server.

Шаг 7 — Подписание CSR (необязательно)

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

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

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

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

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

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

  1. ./easyrsa sign-req server sammy-server

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

Output
You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source 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 = sammy-server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

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

Выполнив эти шаги, вы подписали CSR sammy-server.req, используя закрытый ключ CA Server в /home/sammy/easy-rsa/pki/private/ca.key. Полученный файл sammy-server.crt содержит открытый ключ шифрования сервера практики, а также новую подпись от CA Server. Смысл подписи в том, чтобы сообщить всем, кто доверяет ЦС, что они также могут доверять сертификату sammy-server.

Если бы этот запрос был для реального сервера, такого как веб-сервер или VPN-сервер, последним шагом на сервере ЦС было бы распространение новых sammy-server.crt и ca.crt файлов с CA Server на удаленный сервер, который сделал запрос CSR:

  1. scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_server_ip:/tmp

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

Шаг 8 — Отзыв сертификата (необязательно)

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

Общий процесс отзыва сертификата состоит из следующих шагов:

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

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

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

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

  1. cd ~/easy-rsa

Затем запустите скрипт easyrsa с параметром revoke, за которым следует имя клиента, которого вы хотите отозвать. Следуя приведенному выше практическому примеру, общее имя сертификата — sammy-server:

  1. ./easyrsa revoke sammy-server

Вам будет предложено подтвердить отзыв, введя yes:

Output
Please confirm you wish to revoke the certificate with the following subject: subject= commonName = sammy-server Type the word 'yes' to continue, or any other input to abort. Continue with revocation: yes . . . Revoking Certificate 8348B3F146A765581946040D5C4D590A . . .

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

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

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

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

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

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

  1. ./easyrsa gen-crl

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

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

Перенос списка отозванных сертификатов

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

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

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

  1. scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

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

Обновление служб, поддерживающих CRL

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

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

Изучение и проверка содержимого CRL

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

  1. cd ~/easy-rsa
  2. openssl crl -in pki/crl.pem -noout -text

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

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

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

Заключение

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

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

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