Ubuntu Server 20.04: CA (Certificate Authority)

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

Центр Сертификации (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
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии