Местоположение закрытого ключа не указано в команде создания сертификата в OpenSSL.

Вопрос или проблема

Я следую этому уроку от PKI -> https://pki-tutorial.readthedocs.io/en/latest/simple/index.html

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

В первой команде создается CSR (в который помещается открытый ключ), а закрытый ключ хранится по адресу -> ca/root-ca/private/root-ca.key

openssl req -new \
    -config etc/root-ca.conf \
    -out ca/root-ca.csr \
    -keyout ca/root-ca/private/root-ca.key

Во второй команде сертификат создается на основе вышеуказанного CSR.

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

openssl ca -selfsign \
    -config etc/root-ca.conf \
    -in ca/root-ca.csr \
    -out ca/root-ca.crt \
    -extensions root_ca_ext

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

Примечание: Местоположение закрытого ключа не указано не только для команды создания самоподписанного сертификата Root; оно также не указано при создании других сертификатов (сертификат подписи, почтовый сертификат и сертификат TLS).

Ответ или решение

Конечно! Давайте рассмотрим, как OpenSSL обрабатывает процесс создания сертификата и использует закрытый ключ.

При создании сертификата с помощью OpenSSL с использованием команды openssl ca или openssl req, действительно, вы не указываете непосредственно закрытый ключ в команде. Однако закрытый ключ определяется конфигурацией, установленной в вашем файле конфигурации OpenSSL, который в вашем случае указан как etc/root-ca.conf.

Как работает ссылка на закрытый ключ

  1. Файл конфигурации: В файле конфигурации etc/root-ca.conf содержатся параметры, которые OpenSSL использует для выполнения различных операций. В этом файле обычно есть раздел, который указывает, где расположен закрытый ключ Центра Сертификации (ЦС) и другие связанные параметры.

    Пример секции файла конфигурации может выглядеть следующим образом:

    [ CA_default ]
    dir             = /path/to/your/ca
    database        = $dir/index.txt
    new_certs_dir   = $dir/newcerts
    certificate     = $dir/certs/ca.crt
    private_key     = $dir/private/ca.key

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

  2. Использование команды openssl ca: Когда вы используете команду openssl ca, OpenSSL автоматически ищет закрытый ключ на основании этой конфигурации. Поэтому в команде на создание сертификата вы не указываете закрытый ключ напрямую, так как программа сама обращается к настройкам в конфигурационном файле.

Пример

В вашем примере команды:

openssl ca -selfsign \
    -config etc/root-ca.conf \
    -in ca/root-ca.csr \
    -out ca/root-ca.crt \
    -extensions root_ca_ext

OpenSSL считывает файл конфигурации etc/root-ca.conf, находит секцию для настроек ЦС (например, [ CA_default ]), и извлекает путь к закрытому ключу из параметра private_key.

Вывод

Таким образом, чтобы самостоятельно убедиться, что OpenSSL использует правильный закрытый ключ, вам нужно проверить ваш файл конфигурации. Убедитесь, что путь к закрытому ключу корректен и указывает на файл, соответствующий вашему Центру Сертификации. Это позволяет OpenSSL автоматически находить и использовать закрытый ключ по умолчанию, что упрощает ввод команд для создания и подписания сертификатов.

Если у вас возникнут дополнительные вопросы или потребуется более детальная информация, не стесняйтесь обращаться!

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

Капча загружается...