Ubuntu Server 20.04: CA (Certificate Authority)

Средний рейтинг
Еще нет оценок
Мой рейтинг:

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

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

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

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

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

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

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

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

EASY-RSA.

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
easy rsa

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

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
folder easy-rsa

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
chmod

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
pki

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

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

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

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

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

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

VARS

[свернуть]

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

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
build-ca pass

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

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

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
pki: ca.crt & ca.key

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

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

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

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

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

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

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

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
openssl version
если не установлен

[свернуть]

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
server key

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
openssl genrsa 4096

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
show lenght key

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

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

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

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

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

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
create csr

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

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

  • test-server.req –  csr-запрос, созданный на предыдущем шаге
  • test-server – общее имя запроса.
ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
import req

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

server – тип запроса.  Может быть “cleint”, “server” и “ca”.

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
sing req

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

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
сертификат

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

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

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

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
revoke cert & gen crl

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

ubuntu,ca,цс,linux,easy-rsa,csr,ssl_req,links
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.

Дмитрий

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

два × пять =

Пожалуйста, подтвердите человечность * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.