Как создать CA на Linux сервере

CA или Certificate Authority -понятие в криптографии, обозначающее сторону, которая может подписывать сгенерированные на сервере SSL сертификаты. Сертификаты, которые интернет браузеры распознают как доверенные, выпускаются через известные CA и являются почти всегда платными. Для работы внутри компании (когда используются какие-то внутренние ресурсы) часто бывает полезно генерировать сертификаты самостоятельно и подписывать их. В рамках данного материала рассмотрено как создать CA.

 

 

Как создать CA (Certificate Authority Server)

Создать CA и сгенерировать ключи можно на любом Linux сервере, для этого потребуется воспользоваться пакетом openssl

Прежде всего, CA. Сгенерируем ключ сертификатционного центра

openssl genrsa -out rootCA.key 2048

rootCA.key здесь — имя файла на выходе, 2048 — клина ключа

 

 

Далее используя ключ создаем корневой сертификат

openssl req -x509 -new -key CAroot.key -days 5000 -out CAroot.crt

В примере на 5000 дней, можно указать и другой срок

 

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

 

В результате в текущем каталоге появится в дополнение к файлу ключа CA файл корневого сертификата.

Далее генерируем необходимые SSL сертификаты для определенных доменов. Вопрос уже рассматривался, далее краткая инструкция.

 

Генерируем приватный ключ

openssl genrsa -out mysite.key 2048

На выходе имеем файл mysite.key

Создаем запрос на сертификат с использованием ключа (вновь возникает такой же диалог, в нем в качестве имени домена нужно указать то имя, которое будет использоваться)

openssl req -new -key mysite.key -out mysite.csr

 

Сертификат в общем случае мы бы создали такой командой

openssl x509 -req -days 365 -in mysite.csr -signkey mysite.key -out mysite.crt

Но подписанным он бы не был, поэтому укажем дополнительно корневые ключ и сертификат

 

openssl x509 -req -in mysite.csr -CA CAroot.crt -CAkey CAroot.key -CAcreateserial -out mysite.crt -days 5000

 

На этом все. Теперь серверный ключ и сертификат (rootCA) нужно расположить на основном сервере организации, корневой сертификат добавить на всех машинах.

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

 

Для Firefox на Linux (Desktop система) процесс представлен на скриншоте.

как создать ca

После того как корневой сертификат добавлен любые SSL сертификаты для доменов (в том, числе тот, что создали сейчас для mysite), подписанные CA будут распознаваться как валидные. Их можно устанавливать на любые сервера.

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