Перейти к содержанию

ПРИЛОЖЕНИЕ 4#

Инструкция по генерации ключей и сертификатов в ОС Astra Linux версии 1.6 и выше для работы с технологией HTTP BOOT#

Данный раздел описывает основные настройки для построения инфраструктуры открытых ключей (PKI) с помощью библиотеки OpenSSL в OC Astra Linux версии 1.6 и выше для работы с технологией HTTP Boot.

Предварительная подготовка АРМ с OC Astra Linux версии 1.6 и выше#

Для работ по генерации ключей и сертификатов в ОС Astra Linux необходимо:

  • установить пакет библиотек libgost-astra;
  • настроить конфигурационный файл;
  • создать инфраструктуру УЦ для генерации ключей и сертификатов.

Установка и настройка пакета библиотек libgost-astra#

В состав дистрибутива ОС Astra Linux версии 1.6 и выше (далее - ОС Astra Linux) входит пакет библиотек libgost-astra для выполнения защитного преобразования по алгоритмам ГОСТ.

Для установки данного пакета необходимо:

  • вставить установочный диск для ОС Astra Linux версии 1.6 и выше в дисковод;
  • авторизоваться под административным пользователем;
  • выполнить команду для установки пакета библиотек;
    apt install libgost-astra
    
  • или выполнить установку с помощью графического менеджера пакетов Synaptic (менеджер пакетов устанавливается автоматически при установке ОС и доступен через меню «Пуск» → «Панель управления» → «Программы» → «Менеджер пакетов Synaptic»):

    • найти пакет libgost-astra;
    • поставить метку «Установить»;
    • нажать кнопку «Применить»;
    • следовать подсказкам установщика.

Установленный пакет libgost-astra обеспечивает включение в состав методов защитного преобразования, поддерживаемых пакетами OpenSSL, следующих алгоритмов:

  • ГОСТ Р 34.10-2001 и ГОСТ Р 34.10-2012 - алгоритмы цифровой подписи;
  • поддерживается обмен ключами, основанный на открытых ключах (см. RFC 4357).

Алгоритмы используют:

  • закрытые ключи 256 бит для ГОСТ Р 34.11-2001, и 256/512 бит для ГОСТ Р 34.11-2012;
  • открытые ключи 512 бит для ГОСТ Р 34.11-2001 и 512/1024 для ГОСТ Р 34.11-2012;
  • ГОСТ Р 34.11-94 алгоритм хеширования. Хэш 256 бит;
  • ГОСТ Р 34.11-2012 алгоритм хеширования. Хэш 256 и 512 бит;
  • ГОСТ 28147-89 - симметричное защитное преобразование с ключом 256 бит; Реализованы режимы CBC, CFB и CNT, поддерживается алгоритмы “key meshing” (см. RFC 4357);
  • ГОСТ 28147-89 в режиме выработки имитовставки. Базируется на алгоритме симметричного защитного преобразования. Симметричный ключ 256 бит и разрядность вставки от 8 до 64 бит (по умолчанию 32 бит).
  • ГОСТ Р 34.13–2015 - симметричное защитное преобразование «Кузнечик».

Настройка файла конфигурации с поддержкой ГОСТ алгоритмов#

Автоматическая настройка конфигурационного файла#

При установке пакета библиотек OpenSSL образец стандартного конфигурационного файла копируется в архив с образцом конфигурации, расположенным /usr/share/doc/libgost-astra/openssl.cnf.gz.

Для распаковки архива в файл конфигурации /etc/ssl/openssl.cnf необходимо выполнить команду:

gunzip -c /usr/share/doc/libgost-astra/openssl.cnf.gz | sudo tee /etc/ssl/openssl.cnf > /dev/null

Примечание

Конфигурационный файл заменит существующий (в случае если он был), все внесенные изменения будут уничтожены.

Ручная настройка конфигурационного файла#

Для ручного изменения конфигурации после установки пакета libgost-astra в конфигурационном файле OpenSSL (/etc/ssl/openssl.cnf) необходимо выполнить следующие действия:

  • добавить в начало конфигурационного файла /etc/ssl/openssl.cnf строку
    openssl_conf = openssl_def
    
  • в конец конфигурационного файла добавить строки:
    [openssl_def]
    engines = engine_section
    
    [engine_section]
    gost-astra = gost_section
    
    [gost_section]
    engine_id = gost-astra
    dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/gost-astra.so
    default_algorithms = ALL
    CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
    

Дополнительные изменения в конфигурационный файл#

В конфигурационном файле /etc/ssl/openssl.cnf в разделе [ CA_default ] необходимо изменить значение директивы dir = ./demoCA на dir = ./.

[ CA_default ]
 dir = ./

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

В примере будут использоваться расширения для генерации сертификатов. Необходимо убедиться, что расширения включены в стандартном конфигурационном файле, для этого необходимо убедиться, что в конфигурационном файле /etc/ssl/openssl.cnf имеются записи вида (строки должны быть раскомментированы, т.е. должны отсутствовать любые знаки типа «#» до начала строки):

[ usr_cert ]
# Эти расширения будут добавлены при подписывании запроса нашим УЦ
basicConstraints=critical,CA:false
keyUsage = nonRepudiation, digitalSignature, keyAgreement
nsComment = "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer

[ v3_ca ]
# Расширения для типового УЦ
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
keyUsage = cRLSign, keyCertSign
Для работы с шаблоном для списка аннулированных сертификатов формата CRL V2 необходимо убедиться, что в конфигурационном файле /etc/ssl/openssl.cnf имеется строка (строка должна быть раскомментирована, т.е. должны отсутствовать любые знаки типа «#» до начала строки) вида:
crl_extensions = crl_ext

Создание удостоверяющих центров для генерации и работы с сертификатами#

Создание однорангового удостоверяющего центра#

Для создания однорангового удостоверяющего центра (далее - УЦ) необходимо осуществить следующие действия:

  • создать ключ УЦ;
  • создать сертификат УЦ;
  • создать ключ клиента;
  • создать запрос на сертификат администратора;
  • выпустить сертификат для администратора на основе запроса;
  • создать списка отзыва сертификатов.

  1. Создаем каталог (СА) для удостоверяющего центра, устанавливаем безопасные права доступа. Задаем значение параметра «umask» таким образом, чтобы вновь создаваемые файлы имели права доступа чтения и записи только для создавшего их пользователя:
    1
    2
    3
    4
    mkdir CA
    chmod u=rwx,g=,o= CA
    cd CA
    umask 066
    
  2. Создаем структуру каталогов и файлов для УЦ:

    1
    2
    3
    4
    5
    mkdir certs crl newcerts private
    chmod 700 private
    touch index.txt
    touch index.txt.attr
    echo 1000 > serial
    

    Примечание

    Файлы index.txt и serial необходимы, чтобы отслеживать статус выпущенных закрытых ключей и сертификатов.

  3. Создаем закрытый ключ (private/rootca.key) для УЦ. В качестве алгоритма для закрытого ключа используется алгоритм ГОСТ Р 34.10-2012 с длиной ключа 256 бит:

    openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A –out private/rootca.key
    

    Внимание!

    Закрытый ключ корневого сертификата удостоверяющего центра является наиболее секретным элементом инфраструктуры открытых ключей и должен быть надежно защищен.

  4. Изменяем права доступа к файлу «только на чтение» для пользователя, который сгенерировал данный ключ:

    chmod 400 private/rootca.key
    

  5. Выпускаем корневой сертификат УЦ (certs/rootca.crt) (далее CA сертификат), который подписывается закрытым ключом private/rootca.key. Для закрытого ключа в сертификате используется алгоритм ГОСТ Р 34.10-2012 с длиной ключа 256 бит.

    openssl req -new -x509 -md_gost12_256 -days 365 -extensions v3_ca -key private/rootca.key -out certs/rootca.crt \
    -subj /C=RU/ST=SPb/L=SPb/O=ExampleInc/OU=ITdept/CN=ca-server
    

    Примечание

    Параметр –days установлен на 365, что означает, что сертификат действителен в течение следующих 365 дней. Для изменения срока действия сертификата необходимо заменить числовое значение 365 на необходимое.

    Корневой сертификат является сертификатом самого удостоверяющего центра и используется для подписи и удостоверения подлинности других сертификатов. Является самоподписанным.

  6. Изменяем права на данный CA сертификат:

    chmod 444 certs/rootca.crt
    

  7. Просмотреть содержимое СА сертификата можно командой:
    openssl x509 -in certs/rootca.crt -noout -text
    
  8. Генерируем закрытый ключ для сертификата администратора безопасности (private/admin.key):
    openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A –out private/admin.key
    
  9. Просмотреть содержимое закрытого ключа можно командой:
    openssl pkey –in private/admin.key -text
    
  10. Для закрытого ключа изменяем права:
    chmod 400 private/admin.key
    
  11. Генерируем запрос на выдачу сертификата в УЦ с использованием закрытого ключа администратора безопасности (private/admin.key):
    openssl req -md_gost12_256 –new –key private/admin.key -out certs/admin.csr -subj /C=RU/ST=SPb/L=SPb/O=ExampleInc/OU=ITdept/CN=admin_crt
    
  12. Данный запрос на выдачу сертификата подписывается на УЦ:
    openssl ca -extensions usr_cert -notext -md md_gost12_256 –keyfile private/rootca.key -cert certs/rootca.crt -in certs/admin.csr -out certs/admin.crt
    
  13. После выполнения команды из п.12 выводится информация о сертификате, производится уточнение о выпуске и подписи данного сертификата. Для завершения процедуры нажмите клавишу «y»:
    1
    2
    3
    4
    5
    6
    7
    Certificate is to be certified until Jul 29 08:18:30 2021 GMT (365 days)
    Sign the certificate? [y/n]:y
    
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    
  14. Изменяем права на сертификат:
    chmod 444 certs/admin.crt
    
  15. Создаем файл crlnumber
    echo 1000 > crlnumber
    
  16. Создаем список отозванных сертификатов (далее - CRL) с помощью команды
    openssl ca –keyfile private/rootca.key -cert certs/rootca.crt  -gencrl -out crl/rootca.crl
    
  17. Посмотреть результат можно следующим образом:
    openssl crl -in crl/rootca.crl -text
    

Электронная подпись файла#

С помощью OpenSSL возможно создание открепленной (отсоединенной) электронной подписи (далее – ЭП). С помощью открепленной ЭП возможна подпись файла любого формата, при этом сама ЭП записывается в отдельный файл (*.sign). Для создания ЭП используется закрытый ключ сертификата администратора безопасности (private/admin.key), генерируемого в предыдущем разделе.

Подпись файла и создание ЭП#

Выбрать файл образ загружаемой ОС, который необходимо подписать для констатации его целостности и подлинности - например, test.iso. Подписываем файл образ с помощью закрытого ключа сертификата администратора безопасности private/admin.key. Для создания файла ЭП test.iso.sign используется алгоритм ГОСТ Р 34.10-2012 с длиной ключа 256 бит.

openssl dgst -md_gost12_256  -sign private/admin.key –out test.iso.sign test.iso

Примечание

Имя файла подписи должно быть идентично имени файла загружаемого образа ОС. Если файл образа загружаемой ОС имеет наименование Filname.isо то файла подписи должен иметь имя Filename.iso.sign.

Настройка загрузки в Numa BIOS#

Для настройки загрузки с использованием технологии HTTP Boot необходимо:

  • создать профиль загрузки, в качестве типа загрузки выбрать «HTTP Boot»;
  • в поле “URL” указать адрес загружаемой подписанной ОС (test.iso). Если порт отличается от стандартных (http – 80, https – 443), необходимо указать порт через двоеточие;
  • в раздел «Сертификаты» загрузить корневой сертификат УЦ == certs/rootca.crt, выработанного в п.2 настоящего приложения;
  • в появившемся разделе «Сертификат для HTTP Boot» загрузить сертификат администратора == certs/admin.crt.

    Данный сертификат также возможно загрузить на сервер, где располагается подписанный образ загружаемой ОС, для этого необходимо переименовать данный сертификат admin.crt на Filename.iso.crt, где «Filename.iso» имя образа файла загружаемой ОС. Для текущего примера необходимо переименовать файл на test.iso.sign;

  • загрузить файл ЭП test.iso.sign (созданный во время подписи файла test.iso в п.3.1 настоящего приложения) на HTTP(S) сервер, где располагается соответствующий файл образ test.iso;

  • сохранить профиль загрузки.