Установка и использование платформы

GeneratePkiKeypair

Используйте утилиту GeneratePkiKeypair для создания ключевой пары ноды и подписанного этой ключевой парой запроса на сертификат (Certificate Signing Request – CSR) стандарта X.509.

Создание запроса на сертификат выполняется с использованием СКЗИ «КриптоПро CSP», входящего в состав блокчейн-платформы Конфидент.

Ключи ЭП блокчейн-платформы Конфидент хранятся в ключевом контейнере, формат которого определяется входящим в её состав СКЗИ «КриптоПро CSP». Подробнее о формате ключевого контейнера см. в эксплуатационной документации на СКЗИ «КриптоПро CSP».

Утилита GeneratePkiKeypair заполняет поля в созданном запросе на сертификат в соответствии с конфигурационным файлом, который указывается во входных параметрах утилиты.

Примечание

Утилита GeneratePkiKeypair также используется при генерации ключей для создания канала связи по протоколу TLS. За один запуск генератор создаёт одну ключевую пару.

Конфигурационный файл для GeneratePkiKeypair

До запуска генератора необходимо подготовить конфигурационный файл в формате HOCON pki-keypair-generator.conf с данными для запроса на сертификат. Ниже приведён пример этого файла:

pki-key-pair-generator {
    crypto-type = gost
    chain-id = T
    key-pair-algorithm = "GOST_EL_2012_256" # or GOST_DH_2012_256
    keystore-password = "avada-kedavra"
    out-dir = "/Users/dummy/cert_requests" # optional: execution dir if not set
    cert-request-content {
        CN = "Node-0"
        O = "Web3Tech"
        OU = "IT Business"
        C = "RU"
        S = "Moscow"
        L = "Moscow"
        extensions {
            key-usage = ["digitalSignature"]
            extended-key-usage = ["clientAuth"] # or ["serverAuth"]
            subject-alternative-name = "DNS:welocal.dev,DNS:localhost,IP:51.210.211.61,IP:127.0.0.1"
        }
    }
}

Заполните поля конфигурационного файла:

  • crypto-type — режим работы; поддерживается только значение gost – поддержка алгоритмов ГОСТ криптографии;

  • chain-id — идентифицирующий байт сети; допустимо передать только один символ без кавычек либо в двойных кавычках: латинскую букву (строчную или прописную), либо цифру; значение должно совпадать с параметром blockchain.custom.address-scheme-character в конфигурационном файле ноды;

  • key-pair-algorithm — алгоритм генерации ключевой пары; допустимые значения:

    • GOST_EL_2012_256 — для ключей ЭП (ключей ноды); в этом случае в поле extensions.key-usage должно быть указано значение digitalSignature;

    • GOST_DH_2012_256 — для ключей обмена для создания канала связи по протоколу TLS; в этом случае в поле extensions.key-usage должно быть указано значение keyEncipherment или dataEncipherment;

  • keystore-password — пароль хранилища ключей (keystore);

Примечание

Этот же пароль потребуется в дальнейшем:

– пароль должен быть указан в конфигурационном файле ноды в параметре wallet.password;

– при использовании PKI этот же пароль используется при подписании genesis-блока, когда в консоли выводится запрос ввода пароля хранилища ключей (сообщение «enter keystore password»);

  • out-dir — директория, в которую будет выгружен запрос на сертификат; опциональное поле; если значение не указано, то запрос выгружается в директорию, из которой запускался генератор;

  • cert-request-content — поля с информацией для создания запроса на сертификат:

    • CN — общее имя ноды;

    • O — организация;

    • OU — подразделение;

    • C — страна;

    • S — штат или провинция;

    • L — наименование населенного пункта;

    • extensions

      • key-usage — допускаются следующие значения, указывающие на назначение ключа:

        • digitalSignature — укажите это значение для ключей ЭП (ключей ноды);

        • keyEncipherment — укажите это значение при генерации ключей обмена для создания канала связи по протоколу TLS;

        • dataEncipherment — укажите это значение при генерации ключей обмена для создания канала связи по протоколу для TLS.

      • extended-key-usage — массив дополнительных значений типа enum, указывающих назначение ключа; опциональное поле; допустимые значения:

        • ServerAuth,

        • ClientAuth,

        • CodeSigning,

        • EmailProtection.

      • subject-alternative-name — альтернативное имя субъекта; в блокчейн-сети используется для задания дополнительных имен хостов в рамках протокола TLS; опциональное поле.

Запуск GeneratePkiKeypair

Скопируйте в директорию ноды файл generators.jar. После этого утилиту GeneratePkiKeypair можно запустить из командной строки. В качестве аргумента утилите необходимо передать один параметр: путь до файла с конфигурацией:

java -cp " generator-1.9.0.jar:gostCrypto-5.0.42119-A/*" com.wavesenterprise.generator.pki.PkiKeyPairGenerator pki-keypair-generator.conf

В процессе работы генератор запрашивает пароль ключевой пары; пример сообщения: «Enter key entry „3MrfnwhPPmvJp5B4hiwUwqtSJBJGs9DuxWe“ new password:». Введите и подтвердите пароль. Этот же пароль потребуется в дальнейшем:

– при использовании PKI – при подписании genesis-блока, когда в консоли выводится запрос ввода пароля ключевой пары (сообщение «enter keypair password»);

– в файле env в поле WE_NODE_OWNER_PASSWORD ноды необходимо указать этот же пароль:

WE_NODE_OWNER_PASSWORD=console # пароль из enter keypair password
WE_NODE_OWNER_PASSWORD_EMPTY=false

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

2022-03-28 11:37:56,369 INFO [ioapp-compute-0] c.w.g.p.PkiKeyPairGenerator$ - Key pair successfully saved
2022-03-28 11:37:56,370 INFO [ioapp-compute-0] c.w.g.p.PkiKeyPairGenerator$ - Generating certificate request
2022-03-28 11:37:56,375 INFO [ioapp-compute-0] c.w.g.p.PkiKeyPairGenerator$ - Certificate request generated
2022-03-28 11:37:56,380 INFO [ioapp-compute-0] c.w.g.p.PkiKeyPairGenerator$ - Certificate request successfully exported to
 '/Users/username/Documents/VSCodeProjects/web3techru/generator/jars/requests/3NAjk7wnh6VfE6esY9s94FGE1Z5QFDvPB3S.req'
2022-03-28 11:37:56,383 INFO [ioapp-compute-0] c.w.g.p.PkiKeyPairGenerator$ - Generated keypair:
Public key: 5GZrzce48Jv48Lq8Hn8PTqFDA1Yg2wWkAww1VXSonATfSub4mwo3YPymvqjkKYszxj4f794GqySz4deAZayroNnA
Alias (address for chain-id 'T'): 3NAjk7wnh6VfE6esY9s94FGE1Z5QFDvPB3S

Результат работы GeneratePkiKeypair

В результате работы генератор GeneratePkiKeypair производит следующие действия:

  • выводит в командной строке

  • блокчейн адрес (алиас) ноды,

  • ключ проверки ЭП ноды в кодировке Base58,

  • имя контейнера (в конце лога генератора); оно потребуется для дальнейшей настройки.

  • записывает ключ ЭП ноды в ключевой контейнер в хранилище ключей по адресу /var/opt/cprocsp/keys/root/{username};

  • выгружает запрос на сертификат (CSR) в указанную в конфигурационном файле pki-keypair-generator.conf директорию; запрос на сертификат содержит ранее сгенерированный ключ проверки ЭП и информацию, полученную из конфигурационного файла.