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

Я знаю, как получить шестнадцатеричное представление открытого ключа, но OpenSSL хочет, чтобы зашифрованный файл использовался при создании подписанных сертификатов.

Как я могу предоставить OpenSSL файл входного открытого ключа, который ему нужен для создания нового сертификата, когда у меня есть только существующий сертификат, подписанный другим ЦС?

1 ответ1

1

Это довольно странная возможность, но командная строка OpenSSL действительно может «переподписать» существующий сертификат.

 openssl x509 -in oldcert -CA cacertfile [-CAkey capkeyfile] -out newcert -days N

CA cert и privatekey должны (оба) быть в формате PEM; Вы можете включить приватный ключ в файл сертификата и опустить -CAkey file . Если вы опустите -days N срок действия по умолчанию равен 30 дням. oldcert и newcert по умолчанию являются PEM, но могут быть изменены с помощью -inform и -outform соответственно.

Если вы делаете это только один раз, проще всего использовать -set_serial S для нового сериала. Если вы сделаете или могли бы сделать это несколько раз для одного ЦС, чтобы каждый из них получал уникальный серийный номер, позвольте OpenSSL использовать его файл серийного счетчика, указав, по крайней мере, -CAcreateserial в первом.

По умолчанию расширения остаются без изменений. Если oldcert имеет расширение AuthorityKeyIdentifier, указывающее на старый ЦС, а новый ЦС отличается, это сделает полученный сертификат непригодным для использования, поскольку его невозможно проверить. Другие связанные с CA расширения, такие как CRLDP и AIA, также могут вызывать проблемы. Используйте -clrext для удаления старых расширений; если вам нужны (любые) расширения в новом CERT, вы должны настроить их (все) в файл , заданный с -extfile и необязательно -extensions (раздел).

См. Https://www.openssl.org/docs/apps/x509.html#SIGNING-OPTIONS (и перейдите по ссылке на x509v3_config, если вам нужны расширения). Предупреждение под -CA "... без опции -req ввод ... должен быть самоподписан" завышено; если нет, openssl выдает сообщение об ошибке "невозможно проверить", но создает новый сертификат по желанию. Кроме того, в выпуске 1.0.1 до f была ошибка, из-за которой в этом случае выводился неправильный результат; убедитесь, что вы не используете одну из этих версий.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .