Ubuntu Server 20.04: CA (Certificate Authority)

Средний рейтинг
4 из 5 звезд. 1 голосов.
Мой рейтинг:

Внимание! Данный материал размещен 05.07.2021. Информация может быть не актуальна на данный момент! Будьте, пожалуйста, внимательны!

Центр Сертификации (Certificate Authority).

Потребовалось по работе настроить Центр Сертификации. До этого был на Windows Server, но не понравилось людям. Да и сам я не смог разобраться, как в консоли автоматизировать процесс.

Поэтому решил попробовать сделать на Ubuntu Server 20.04. Конечно, взял за основу статью и немного под себя ее переделал:

  • написал скрипты с псевдографикой — whiptail;
  • у них используется определенная дата, до которой надо выпускать серты. Я не смог понять как ее сделать, и пришлось колхозить. Может кто подскажет мою ошибку;
  • упаковка в pfx с паролем.

И так, начнем.

Cсылка на источник как всегда внизу.

Предварительная подготовка.

Установка обновлений ОС.

EASY-RSA.

easy rsa

Создадим каталог easy-rsa в домашнем каталоге пользователя

Теперь создадим символические ссылки на ранее установленный easy-rsa (необходимо для того, что бы при обновлении мы имели всегда актуальную версию ПО)

folder easy-rsa

Ограничим доступ, предоставим разрешения только владельцу

chmod

Инициализируем PKI (Public Key Infrastructure)

pki

Как видно, создался каталог со всем необходимым содержимым.

Далее,  создадим ЦС.

Центр Сертификации (CA).

Создадим файл с переменными

Здесь необходимо заполнить по вашему усмотрению. В моем случае:

set_var EASYRSA_CERT_EXPIRE «» — вычисляемое значение (об этом ниже), т.ч. тут оно у меня пустое. А так количество дней действия сертификата.

VARS

[свернуть]

Теперь создадим пару закрытого и открытого ключа

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

build-ca pass

В моем случае пароль не требуется — требование заказчика, т.ч я добавлю к команде nopass

Так же потребуется ввести CN-имя (общее имя для сервера в контексте Центра Сертификации). В моём случае я просто указал CA.

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

pki: ca.crt & ca.key

Как видно на скриншоте у нас появился сертификат севера — ca.crt и закрытый ключ к нему — ca.key

ca.keyнеобходимо держать в надежном месте и не допускать его утери\кражи.

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

Теперь самое интересное — создание запросов на сертификаты, подписание и отзыв.

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

Создание запросов на сертификат (ssl req).

Проверим установлен ли openssl. По-идеи, должен быть.

У меня вот такой вывод:

openssl version
если не установлен

[свернуть]

Создадим закрытый ключ

server key

В таком случае у нас создался ключ длиной в 2048 бит. Если надо, допустим, большую длину ключа, то можно указать 4096 (размер):

openssl genrsa 4096

Проверить длину ключа можно вот такой командой:

show lenght key

После этого создадим запрос (CSR — Certificate Signing Request)

-key — созданный ранее ключ,

-out — название нашего запроса (я сделал по имени сервера, что бы было понятно).

Потребуется ввести информацию, но это по желанию. В поле «Organization Name» можно поставить просто . (точка).

Для реальных сертификатов лучше всё заполнить как есть.

Можно проверить поля нашего запроса:

create csr

Подписание CSR.

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

  • test-server.req —  csr-запрос, созданный на предыдущем шаге
  • test-server — общее имя запроса.
import req

Теперь подпишем импортируемый запрос:

server — тип запроса.  Может быть «cleint», «server» и «ca».

Появится информация о запросе. Необходимо всё проверить и, если всё правильно, то ввести yes и подтвердить ввод.

sing req

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

После этого в каталоге ~/easy-rsa/pki/issued появился сертификат сервера.

сертификат

Теперь у нас есть связка закрытого ключа (test-server.key) и сертификата (test-server.crt). Можно их передать, например, на веб-сервер, настроить apache или nginx и включить SSL. Но это только как пример.

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

Выполним команду для отзыва:

И команду для генерации списка отозванных сертификатов (CRL — Certificate Revocation List):

revoke cert & gen crl

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

revoked cert

Мои скрипты автоматизации создания сертификата(ов) и их отзыва.

Основной скрипт запуска.

[свернуть]
скрипт создания одного сертификата

[свернуть]
скрипт создания сертификатов из списка

[свернуть]

В предыдущем и в этом скрипте как раз идет изменение даты (срока) действия сертификата. Здесь она вычисляемая, скажем так. Но это всё индивидуально и это можно убрать из скриптов.

скрипт отзыва сертификата(ов)

[свернуть]

В данном случае файл должен называться lst_rev.txt и иметь следующее содержание:

Cert1

cert2

cert5

….

CertN

 

Главное не забыть создать нужные каталоги или переписать переменные.

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

 

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

 

 

 

Ссылки (links):

Создание Центра Сертификации

 

If you found an error, highlight it and press Shift + Enter or to inform us.

Дмитрий

родился, учился, работаю-учусь

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

CAPTCHA


0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии