Создание SSL-сертификатов с помощью командной строки

В этом разделе приведен пример создания SSL-сертификатов. Для получения более подробной информации обратитесь к веб-странице https://www.openssl.org/ (acc.: 26 февраля 2018) и к странице в Википедии: https://wiki.openssl.org/index.php/Main_Page (acc.: 03 апреля 2018).

Центр сертификации (ЦС) подписывает цифровые сертификаты. Доверенные центры сертификации, такие как VeriSign и DigiCert, подписывают сертификаты для доменов. Иногда имеет смысл представляться в качестве собственного ЦС. В данном разделе показано, как создавать сертификаты и действовать в качестве собственного центра сертификации.

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

ВНИМАНИЕ

Сертификаты должны располагаться на том же диске, что и проект «КАСКАД Цифра». Когда проект, например, сохраняется на диске D, сертификаты также должны быть сохранены на D.

Конфигурация на стороне сервера

Создание корневой пары

Пара состоит из корневого ключа (ca.key.pem) и корневого сертификата (ca.cert.pem). Корневой ключ и корневой сертификат

Определите свой центр сертификации (ЦС).

ВНИМАНИЕ

Обратите внимание, что корневая пара должна быть создана в безопасной среде на компьютере, изолированном от Интернета.

  • Создайте каталог «root» и подкаталог «ca» в нём.
  • В командной строке выполните следующие команды в каталоге «root/ca»:

 mkdir certs crl newcerts private

 touch index.txt

 echo 1000 > serial

  • Создайте конфигурационный файл корневого ЦС под названием «openssl.cnf». См. пример в интернете. Файл openssl.cnf идет в комплекте с установочным пакетом «КАСКАД Цифра». Его можно скопировать из каталога путь_КАСКАД/bin.

ВНИМАНИЕ

Адаптируйте прописанные пути в скопированном файле openssl.cnf.

  • В файле openssl.cnf определите каталог «ca» в секции [ CA_default ], как показано ниже.

    [ CA_default ]

# Каталог и расположение файлов.

dir               = /root/ca

certs             = $dir/certs

crl_dir           = $dir/crl

new_certs_dir     = $dir/newcerts

database          = $dir/index.txt

serial            = $dir/serial

RANDFILE          = $dir/private/.rand

  • Для целей аутентификации необходимо иметь отдельные сертификаты, содержащие соответствующие имена пользователей. Стандартные сертификаты, поставляемые с «КАСКАД Цифра», защищают только соединение и не содержат никакой информации о пользователе. Необходимо создать сертификаты, содержащие имя пользователя. Добавьте строку «roleOccupant= supplied» в файл openssl.cnf в секции [policy_loose]. Кроме того, во время создания сертификата, вы можете использовать специальный параметр командной строки, чтобы добавить пользователя.

 Создание корневого ключа

  •  Создайте корневой ключ «ca.key.pem», как показано ниже

 ПРИМЕЧАНИЕ

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

 ПРИМЕЧАНИЕ

 Обратите внимание, что ввод ssl-команд производится без перевода строки. В примере переводы строк присутствуют для большей читабельности. Их следует удалить.

   openssl genrsa -aes256 -out private/ca.key.pem 4096

   Enter pass phrase for ca.key.pem: secretpassword

   Verifying — Enter pass phrase for ca.key.pem: secretpassword   

Создание корневого сертификата

 ПРИМЕЧАНИЕ

 Используйте корневой ключ (ca.key.pem) для создания корневого сертификата (ca.cert.pem). Корневой сертификат должен иметь длительный срок действия, например 10 или 20 лет. По истечении срока действия корневого сертификата другие сертификаты, выданные центром сертификации, становятся недействительными.

      openssl req -config openssl.cnf

      -key private/ca.key.pem

      -new -x509 -days 7300 -sha256 -extensions v3_ca

      -out certs/ca.cert.pem

Проверка корневого сертификата

  openssl x509 -noout -text -in certs/ca.cert.pem

Создание промежуточной пары

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

  • Создайте еще один подкаталог «root/ca/intermediate» для файлов промежуточного центра сертификации. Создайте такую же структуру для файлов корневого центра сертификации.
  • В каталоге «intermediate» вызовите:

mkdir certs crl csr newcerts private

touch index.txt

echo 1000 > serial

  • Добавьте файл «crlnumber» в дерево каталогов промежуточного центра сертификации. Данный файл используется для отслеживания списков отозванных сертификатов.

echo 1000 > /root/ca/intermediate/crlnumber

  • Скопируйте файл openssl.cnf из каталога «КАСКАД Цифра» в каталог промежуточного ЦС.

Создание промежуточного ключа

  • В каталоге «root/ca» создайте промежуточный ключ

openssl genrsa -aes256 -out intermediate/private/intermediate.key.pem 4096

Создание промежуточного сертификата

  • Используйте промежуточный ключ для создания запроса подписи сертификата (CSR).

    openssl req -config intermediate/openssl.cnf -new -sha256

    -key intermediate/private/intermediate.key.pem

    -out intermediate/csr/intermediate.csr.pem

  • Чтобы создать промежуточный сертификат, используйте корневой центр сертификации с расширением «v3_intermediate_ca» для подписи промежуточного CSR.

 ПРИМЕЧАНИЕ

Обратите внимание, что сведения о CSR не обязательно должны соответствовать данным из промежуточного центра сертификации. Для сертификатов общим именем должно быть имя пользователя «КАСКАД Цифра», с которым должен быть запущен менеджер, для которого используется сертификат. Укажите имя пользователя «КАСКАД Цифра» (например, «para»).

    openssl ca -config openssl.cnf -extensions v3_intermediate_ca

    -days 3650 -notext -md sha256

    -in intermediate/csr/intermediate.csr.pem

    -out intermediate/certs/intermediate.cert.pem

  •  Инструментарий центра сертификации OpenSSL хранит базу данных сертификатов в файле index.txt. Не удаляйте и не изменяйте этот файл.

Проверка промежуточного сертификата

  • Проверьте правильность сведений промежуточного сертификата

     openssl x509 -noout -text

     -in intermediate/certs/intermediate.cert.pem

  •   Проверьте промежуточный сертификат на соответствие корневому сертификату. ОК означает, что цепочка доверия в порядке.

      openssl verify -CAfile certs/ca.cert.pem

      intermediate/certs/intermediate.cert.pem

Создание файла цепочки сертификации

Когда приложение (например, браузер) пытается проверить сертификат, подписанный промежуточным центром сертификации, оно также должно проверить промежуточный сертификат на соответствие корневому сертификату. Файл пути сертификации – это путь к корневому сертификату. Чтобы закончить цепочку доверия, необходимо создать цепочку сертификатов ЦС, чтобы представить её приложению.

  • Объедините промежуточный и корневой сертификаты вместе:

    cat intermediate/certs/intermediate.cert.pem

    certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem

 Подпись сертификатов сервера и клиента

Центр сертификации должен будет выполнить описанные далее действия. Сторонняя компания, например, можно также создать собственный закрытый ключ и запрос подписи сертификата (CSR), не раскрывая свой закрытый ключ. На основании CSR, вы формируете подписанные сертификат. В этом случае следует пропустить выполнение команд «genrsa» и «req».

Создание ключа

Во время TLS-рукопожатия используется промежуточная пара с 2048 битами, поскольку так рукопожатие происходит быстрее, чем при выделении на промежуточную пару 2048 бит.

ПРИМЕЧАНИЕ

Обратите внимание, что команда «-aes256» создает ключ с паролем.

  • В каталоге «root/ca» вызовите:

   openssl genrsa -aes256

   -out intermediate/private/www.example.com.key.pem 2048

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

  • С помощью закрытого ключа создайте запрос подписи сертификата (CSR). Если вы не добавили пользователя в файл «openssl.cnf» в самом начале при создании, используйте специальную опцию командной строки (-subj roleOccupant = «UserName»), чтобы добавить пользователя в сертификат.

ПРИМЕЧАНИЕ

Обратите внимание, что сведения о CSR не обязательно должны соответствовать данным из промежуточного центра сертификации. Для сертификатов общим именем должно быть имя пользователя «КАСКАД Цифра», с которым должен быть запущен менеджер, для которого используется сертификат. Укажите имя пользователя «КАСКАД Цифра» (например, «para»).

ВНИМАНИЕ

При создании сертификатов для разных пользователей, которые будут использоваться для запуска менеджеров, учтите, что поля: «Сертификат/Ключ», «Имя CN» и «Роль/Пользователь» должны быть разными для каждого пользователя.
Сертификат/Ключ -> Имя файла
CN-имя -> Имя ключа
Роль/Пользователь -> Имя пользователя в Kaskad
см. раздел «Создание SSL-сертификатов с помощью панели».

  • В каталоге «root/ca» вызовите:

     openssl req -config intermediate/openssl.cnf

     -key intermediate/private/www.example.com.key.pem

     -new -sha256 -out intermediate/csr/www.example.com.csr.pem
     -subj roleOccupant = «para»

Через промежуточный центр сертификации подпишите CSR. Если вы будете использовать сертификат на сервере, используйте расширение «server_cert». Если вы будете использовать сертификат для аутентификации пользователя, используйте расширение «usr_cert». Сертификаты, обычно, действительны в течение года.

  openssl ca -config intermediate/openssl.cnf
 -extensions server_cert -days 375 -notext -md sha256
 -in intermediate/csr/www.example.com.csr.pem
 -out intermediate/certs/www.example.com.cert.pem

Файл «intermediate/index.txt» должен содержать строку, ссылающуюся на этот новый сертификат.

V 160420124233Z 1000 unknown … /CN=www.example.com

Проверка сертификата

  • Проверьте сертификат:

openssl x509 -noout -text

-in intermediate/certs/www.example.com.cert.pem

  • Используйте файл цепочки сертификатов ЦС, созданный ранее (ca-chain.cert.pem), чтобы проверить, что новый сертификат имеет действительную цепочку доверия.

openssl verify -CAfile intermediate/certs/ca-chain.cert.pem

intermediate/certs/www.example.com.cert.pem

Развертывание сертификата

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

    ca-chain.cert.pem

    www.example.com.key.pem

    www.example.com.cert.pem

Если вы подписываете CSR со стороны, вам нужно только вернуть им файл цепочки сертификации (ca-chain.cert.pem) и сам сертификат (www.example.com.cert.pem).

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

Это список сертификатов, которые были отозваны.

Клиентское приложение, например браузер, может использовать список отозванных сертификатов для проверки подлинности сервера. Серверное приложение, такое как Apache или OpenVPN, может использовать данный список для запрета доступа к клиентам, которым больше не доверяют.

  • Опубликуйте список отозванных сертификатов в открытом источнике.

Подготовка файла config

Расположение списка обычно фиксируется в сертификате центром сертификации. Поэтому добавьте строку «crlDistributionPoints» в секцию [server_cert].

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

  • В каталоге «root/ca» выполните

openssl ca -config intermediate/openssl.cnf

-gencrl -out intermediate/crl/intermediate.crl.pem

  •   Если вы хотите проверить содержимое списка, используйте команду:

     openssl crl -in intermediate/crl/intermediate.crl.pem -noout -text

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

Персона А закрытый ключ и запрос на подпись сертификата (CSR) Персоне Б, к данным которого персона хочет получить доступ.

Персона Б подписывает CSR, затем удостоверяется, что сертификат действителен.

  openssl verify -CAfile intermediate/certs/ca-chain.cert.pem

  intermediate/certs/bob@example.com.cert.pem

Персона Б отправляет подписанный сертификат Персоне А. Теперь Персона А имеет доступ к данным. Если Персона А вызывает подозрения, Персона Б может запретить доступ Персоне А.

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

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