Чи можуть сервісні сертифікати MS бути підпорядкованими CA, створеним з OpenSSL


16

Я хочу встановити орган сертифікації підприємств для свого домену. Тож я можу видавати сертифікати для різних цілей. Я хотів би дотримуватися найкращої практики створення офлайн-сервісу CA як корінь і налаштування мого корпоративного центру як підлеглого. Але здається дурним ліцензувати повністю копію Windows для цього завдання.

Я сподіваюся, що зможу зробити, це встановити деякий розподіл у прямому ефірі на флеш-диску USB, а потім встановити openssl та встановити мій ЦП на флешку. Коли я буду готовий створити кореневий ключ / cert, я відключу комп'ютер від мережі, а потім більше ніколи не використовуватиму цей USB-диск на підключеному до мережі комп'ютері.

Чи зможу я правильно підписати та створити підпорядкований сертифікат CA для корпоративного офісу Windows, який буде корисним. Які параметри мені потрібно використовувати з OpenSSL, щоб створити ЦС та правильно підписати підлеглий сертифікат ЦС.

Я намагався шукати в Інтернеті, і це було єдине, що я міг знайти з цього приводу. Але це передувало 2008-му, і я не зовсім впевнений, що людина досягла успіху.


Щоб було зрозуміло, інструмент не обов'язково повинен бути OpenSSL, але я не хочу запускати величезний CA, як EJBCA. Я шукаю дуже легку CA, яку можна запускати в середовищі livecd / liveusb.
Зоредаче

Відповіді:


14

Так, це працює чудово; авторизація сертифіката Windows не має жодних труднощів щодо того, що він працює як підлеглий корінь, який не є Windows.

Тестовано з коренем OpenSSL та підпорядкованим Windows 2008 R2 у режимі Enterprise.


Кілька речей, які можуть грати добре з тим, що очікує MS CA у конфігурації OpenSSL:

  • Дійсні місця AIA та CDP повинні застосовуватися до кореневого сертифіката у розділі, налаштованому x509_extensionsвластивістю [req]розділу для самопідписаного кореня. Щось у цьому напрямку:

    authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
    crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
    
  • Даний конфігурація OpenSSL, ймовірно, не дозволяє за замовчуванням підпорядковувати ЦС. Змініть це для підписаних запитів (переконайтеся, що це не місце для запитів, які, звичайно, не повинні бути КА). Це буде в розділі, налаштованому x509_extensionsвластивістю [ca]розділу:

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

Отже, ми зробимо ЦА для тестування.

Зробіть свій корінь:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

Поспіліть із конфігурацією та створіть необхідні файли та каталоги в [ca]розділі вашого конфігурації OpenSSL.

Все готово для того, щоб перейти на сторону дій Майкрософт; створити підпорядкований ОС Windows з підписанням вручну.

Завантажте запит на сертифікат на сервер OpenSSL. Поки ви працюєте над цим, завантажте кореневий сертифікат. Імпортуйте його в магазин надійних коренів - комп’ютера, а не вашого користувача!

Видайте підлеглому сертифікат:

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

Якщо це не спрацювало, у Вашого ЦА, ймовірно, є проблема з конфігурацією - новий каталог certs, файл індексу, послідовний файл тощо. Перевірте повідомлення про помилку.

Якщо пішло, то це все. Якщо ви цього не зробили, створіть CRL і вставте його в CDP, який ви налаштували вище; Я щойно встановив Apache і заклинив його в webroot:

openssl ca -gencrl -out /var/www/root.crl

І поставте свій сертифікат у місце AIA, якщо його ще немає:

cp /etc/ssl/certs/root.pem /var/www/root.pem

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

Кінцевий результат; працюючий ОС Windows без скарг на оснащення Enterprise PKI, з OpenSSL Generated Certificateатрибутами, що повідомляють.

робочий-ca


6

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

Я не бачу причини, по якій ця концепція не працюватиме, оскільки все, що ви робите, - це підписання підлеглого сертифіката ЦА. Якщо ви платите державному ЦА, щоб зробити це за вас, вам не обов'язково було б знати чи не цікавити, який аромат сервера вони використовують.

Все, що вам потрібно подбати, це:

  • ви можете підписати сертифікат з CSR, створеного вашим підлеглим
  • результат можна встановити на самого підлеглого
  • у вас є сертифікат кореневого підпису, який можна встановити як довірений будь-яким клієнтам, на яких ви орієнтовані
  • ви можете створити список відкликань, який десь подається

Я не можу сказати, що я це зробив, але я впевнений, що якщо ви будете слідувати документам для генерування CSR з вікна вікна, то дотримуйтесь ваших документів CA для генерації .p7k cert з CSR, тоді вам слід добре.

До речі - я б рекомендував вам створити свій CA як віртуальну машину для популярного гіпервізора, такого як Hyper-V або VMware, а не завантажувальний диск, переконайтесь, що ви зберігаєте його дуже надійно десь, коли ваш наступник зможе його знайти, і відкрутити його періодично переглядайте офлайн, щоб переконатися, що він працює, або перенести його на нові медіа / технології. Корінний ЦА може мати життя 10 або 20 років ...


+1 OpenSSL - це не провідний інструмент для створення СА, але він працює в цілому. Я не видав сертифікат суб-ЦО для Windows Enterprise CA, але не можу уявити, чому це не спрацювало (хоча в минулому MS вчиняли більш жорстокі антиконкурентні дії). Великий +1 для CA як VM. Зберігання другої копії кореневого серта - хороша ідея (Base64 на папері дуже довговічний і його легко зберігати в сейфі / скарбничка тощо)
Chris S

Я був дуже задоволений собою, коли зрозумів, що можу створити VM без будь-яких сетевих мереж і просто використовувати віртуальний дискету для отримання CSR та підписаних сертифікатів. Sneakernet відродився з віртуальним блиском 21 століття!
dunxd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.