Додавання альтернативних імен предметів (SAN) до існуючого запиту підпису Cert (CSR)


9

Чи може хтось мені сказати, як я додати ряд альтернативних імен предметів до існуючої CSR?

Я не говорю про створення КСВ з SAN та про додавання SAN під час підписання - я знаю, як зробити обидва ці речі.

Передумови: Проблема, що ми маємо, полягає в тому, що ходова частина леза HP дозволяє генерувати CSR, але вони дозволяють використовувати лише один SAN. Ми не можемо використовувати CSR, згенерований в іншому місці, оскільки ми не могли використати результуючий сертифікат, оскільки немає можливості (що я можу знайти) для завантаження ключа до шасі леза.

Стандартний процес нашого КА не дозволяє додавати SAN, підписуючи час. Вони готові експериментувати, проте я намагаюся знайти рішення в нашому кінці, оскільки це означатиме, що нам не доведеться покладатися на те, що для нас нестандартний процес - на мій досвід, якщо їм потрібно використовувати нестандартний процес життя з часом стане важким. Наприклад, коли співробітник, який знає нестандартний процес, не присутній через відпустку тощо.

Поточний метод полягає в підключенні до бортового адміністратора бортового адміністру через веб-gui та генерування CSR за допомогою єдиного CN.

Веб-інтерфейс допускає лише один SAN в CSR.

Тоді ми самостійно підписуємо його наступною строфою у configsl config:

[ v3_ca ]
subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au"

Отриманий сертифікат має додаткові SAN.


Як ви зараз генеруєте сертифікати на шасі леза? Який метод ви використовуєте для підключення тощо. Яку модель шасі леза?
Елі

Шасі - це c7000. Так, ми зараз створюємо КСВ на шасі і додаємо SAN в момент підписання, але це для сертифікованих сертифікатів.
Джейсон Тан

Який метод ви використовуєте для підключення до нього в даний час і який у вас процес створення сертів для нього?
Елі

Я відредагував головне питання, щоб включити поточний метод.
Джейсон Тан

1
Чи можете ви імпортувати сертифікат Cert & Private, якщо ви їх генеруєте на іншій машині та експортуєте?
Клінт

Відповіді:


15

Якщо ваше шасі не підтримує додавання SAN, вам потрібно буде вийняти ключ шасі та створити CSR за допомогою openssl.

Переконайтесь, що req_extensions = v3_reqце не коментується в [ req ]розділі.

Додайте subjectAltNameдо [ v3_req ]розділу.

Створіть нову КСВ.

openssl req -new -key extracted_c7000.key -out your_new.csr

Ви не можете редагувати існуючу CSR.


Що казав cakemox. Якщо ви зможете відредагувати сертифікат (тобто підписану КСВ) після його підписання, це призведе до порушення цілі сертифікаційних органів.
MadHatter

Я не хочу редагувати КСВ після його підписання - це, як ви кажете, переможе зірочку. Я хочу відредагувати CSR після його генерування, але перед тим, як він буде підписаний. Напевно можливо редагувати частини CSR перед підписанням за допомогою openssl.
Джейсон Тан

Якби я міг завантажити ключ, я би. Вибачте, що я не згадував це в оригінальному запитанні, але мені не вдалося знайти ключ, щоб завантажити ключ. Я був би так само радий сплатити суму тому, хто міг сказати мені, як завантажити ключ.
Джейсон Тан

FYI - напевно можливо редагувати частини CSR перед підписанням за допомогою openssl, зокрема опції "openssl req -subj". Однак це не допоможе, наскільки я можу додати розширення V3 SAN, воно просто дозволить вам вказати нову тему, включаючи додаткові CN.
Джейсон Тан

2
CSR підписується приватним ключем машини, тому ви не можете редагувати його після його генерування (інакше він більше не підпишеться). Цілком можливо, що ЦК редагує поля, розміщені в загальнодоступному сертифікаті; це єдиний спосіб змінити поле SAN (над яким ви не маєте контролю, якщо ви надсилаєте це в громадський центр обслуговування).
Chris S

0

Важлива примітка: Все це дещо умоглядно, тому якщо ви глибоко в коді, і це не узгоджується з тим, що я говорю, повірте коду. Я не фахівець з Каліфорнії, я просто граю на телевізорі. Це сказав:

Як особливість КСВ, це буде важко. Останнім кроком у програмному генеруванні CSR є хешування всього, що ви створили, а потім підписання за допомогою приватного ключа. Тож, хоча ви могли додати ці атрибути до тексту КСВ, підпис не збігався б із вмістом, тому жоден ЦА не підписав би його.

Однак у вашому випадку ви керуєте (або принаймні контактуєте з ним). Це дає два варіанти:

  1. Ви можете доручити керівництву центральної служби відверто проігнорувати підпис у КСВ і все-таки видати сертифікат.
  2. Ви можете дозволити CA видавати інший сертифікат, ніж те, що вимагається (наприклад, додаючи атрибути).

З них номер 1 здається найпростішим. Вам потрібно буде зламати печатку, яка виявляється несанкціонованою, на OpenSSL, щоб це зробити, але він має деякі функції, які повинні зробити трохи простішими. Я б почав з asn1parse, який покаже вам, як розірвати КСВ.


Що стосується подальших досліджень, варіант №2 насправді досить простий і виконується рядом ЦА (наприклад, для додавання site.comдо програми www.site.comв якості SAN).
BMDan

0

Хоча відповідь cakemox, безумовно, найпростіший, якщо ви можете якось отримати копію приватного ключа, є інший спосіб, якщо ви не можете, в основному повторно підписавши CSR за допомогою сертифіката "Агент реєстрації".

Ця публікація в блозі css-security.com містить усі деталі, що містять гострий смак . Але огляд процесу на високому рівні виглядає приблизно так:

  • Отримайте свідоцтво про агента з реєстрації
  • Змініть шаблон сертифіката SSL, щоб вимагати сертифікат EA для видачі
  • Придбайте КСВ, яка потребує інформації про SAN
  • Використовуйте сертифікат EA для відставки КСВ, додаючи інформацію про SAN

Коли я спробував це особисто, я майже впевнений, що пропустив частину про зміну шаблону сертифіката. Припускаючи, що ви можете створити сертифікат агента реєстрації для себе, фактичний процес виглядає приблизно так.

Створіть 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

А потім продовжуйте як звичайно процес випуску.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.