Может ли кто-нибудь сказать мне, как добавить несколько альтернативных имен субъектов в существующий CSR?
Я не говорю о создании CSR с помощью SAN или добавлении SAN во время подписания - я знаю, как сделать и то, и другое.
Предыстория: проблема заключается в том, что блейд-шасси HP позволяет создавать CSR, но допускают только одну SAN. Мы не можем использовать CSR, сгенерированный в другом месте, поскольку мы не можем использовать результирующий сертификат, поскольку нет способа (который я могу найти) загрузить ключ в шасси blade-сервера.
Стандартный процесс нашего CA не позволяет добавлять SAN, время подписи. Они готовы экспериментировать, однако я пытаюсь найти решение с нашей стороны, поскольку это будет означать, что нам не придется полагаться на их нестандартный процесс для нас - по моему опыту, если им нужно использовать нестандартный процесс жизнь со временем станет трудной. Например. когда сотрудник, который знает нестандартный процесс, не присутствует в связи с отпуском и т. д.
Текущий метод заключается в подключении к встроенному администратору шасси blade-шасси через веб-интерфейс и генерации CSR с помощью одного CN.
Веб-интерфейс позволяет использовать только один SAN в CSR.
Затем мы самостоятельно подписываем его следующей строкой в конфигурации openssl:
[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"
Результирующий сертификат содержит дополнительные SAN.
Если ваше шасси не поддерживает добавление сетей SAN, вам необходимо получить ключ от шасси и сгенерировать CSR с помощью openssl.
Удостовериться req_extensions = v3_req
раскомментирован в [ req ]
раздел.
Добавить subjectAltName
к [ v3_req ]
раздел.
Создайте новый CSR.
openssl req -new -key extracted_c7000.key -out your_new.csr
Вы не можете редактировать существующий CSR.
Хотя ответ cakemox определенно самый простой, если вы каким-то образом можете получить копию закрытого ключа, есть другой способ, если вы не можете, просто повторно подписав CSR с помощью сертификата «Агента регистрации».
это сообщение в блоге css-security.com имеет все мельчайшие подробности. Но общий обзор процесса выглядит так:
Когда я пробовал это лично, я почти уверен, что пропустил часть об изменении шаблона сертификата. Предполагая, что вы можете создать сертификат агента регистрации для себя, фактический процесс выглядит примерно так.
Создайте san.inf с информацией о расширении SAN в нем
[Extensions]
2.5.29.17="{text}dns=mysan1.example&dns=mysan2.example"
Повторно подпишите заявку
certreq -policy -config "myca.example\CA" orig-request.csr san.inf corrected-request.csr
Отправьте исправленный запрос
certreq -submit -config "myca.example\CA" -attrib "CertificateTemplate:MyTemplate" corrected-request.csr
А затем продолжите процесс выдачи в обычном режиме.
Важная заметка: Все это несколько умозрительно, поэтому, если вы глубоко вникли в код и он не согласен с тем, что я говорю, поверьте коду. Я не эксперт в области CA, я просто играю одного по телевизору. При этом сказано:
Как особенность CSR, это будет сложно. Последний шаг в программной генерации CSR - это хэширование всего, что вы создали, а затем его подпись с помощью закрытого ключа. Таким образом, хотя вы можете добавить эти атрибуты в текст CSR, подпись не будет совпадать с содержимым, поэтому никакой CA не будет ее подписывать.
В вашем случае, однако, вы контролируете (или, по крайней мере, находитесь в контакте с центром сертификации). Это дает вам два варианта:
Из них №1 кажется самым простым. Вам нужно будет сломать защитную пломбу OpenSSL, чтобы заставить его это сделать, но в нем есть некоторые функции, которые должны упростить работу. Я бы начал с asn1parse, который покажет вам, как разбить CSR.