Могут ли службы сертификации MS подчиняться ЦС, созданному с помощью OpenSSL?

16

Я хочу настроить центр сертификации предприятия для своего домена. Поэтому я могу выдавать сертификаты для различных целей. Я хотел бы следовать рекомендациям о том, чтобы иметь автономный ЦС в качестве корневого, и настроить свой корпоративный ЦС в качестве подчиненного. Но, кажется, глупо лицензировать полную копию Windows для этой задачи.

Я надеюсь, что смогу установить какой-нибудь дистрибутив в реальном времени на флэш-диск USB, а затем установить openssl и настроить мой CA на флэш-диске. Когда я буду готов создать корневой ключ / сертификат, я отключу компьютер от сети и больше никогда не буду использовать этот USB-диск на компьютере, подключенном к сети.

Смогу ли я правильно подписать и создать сертификат подчиненного ЦС для корпоративного ЦС Windows, который можно будет использовать. Какие опции мне нужно использовать с OpenSSL, чтобы построить CA и правильно подписать сертификат подчиненного CA.

Я попытался поискать в Интернете, и это было единственное, что я мог найти по этому вопросу. Но это предшествует 2008 году, и я не совсем уверен, что этот человек был успешным.

Zoredache
источник
Чтобы было ясно, инструмент не обязательно должен быть OpenSSL, но я не хочу запускать огромный CA, такой как EJBCA. Я ищу очень легкий CA, который можно запустить в среде livecd / liveusb.
Zoredache

Ответы:

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, вероятно, не позволяет подчиненным ЦС по умолчанию. Измените это для подписанных запросов (конечно, убедитесь, что это не относится к запросам, которые не должны быть CA). Это будет в разделе, настроенном x509_extensionsсвойством [ca]раздела:

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

Итак, мы сделаем CA для тестирования.

Сделайте свой корень:

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

Поиграйте с вашим конфигом и создайте необходимые файлы и каталоги в [ca]разделе вашего конфига OpenSSL.

Все готово для того, чтобы добиться успеха со стороны Microsoft; создать подчиненный ЦС Windows с ручной подписью.

Загрузите запрос сертификата на сервер OpenSSL. Пока вы на нем, загрузите корневой сертификат. Импортируйте его в хранилище доверенных корней - компьютера, а не вашего пользователя!

Выдайте подчиненный сертификат:

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

Если это не сработало, возможно, у вашего ЦС есть проблема с конфигурацией - новый каталог сертификатов, индексный файл, последовательный файл и т. Д. Проверьте сообщение об ошибке.

Если это пошло, то это все. Если нет, создайте 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 CA без жалоб от оснастки Enterprise PKI с контрольным сигналом OpenSSL Generated Certificateв атрибутах.

рабочая ча

Шейн Мэдден
источник
6

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

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

Все, что вам нужно, это заботиться о:

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

Я не могу сказать, что сделал это, но я уверен, что если вы будете следовать документам для создания CSR из окна Windows, а затем будете следовать вашим документам CA для создания сертификата .p7k из CSR, тогда у вас все будет хорошо.

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

dunxd
источник
+1 OpenSSL не лучший инструмент для создания ЦС, но в целом он работает. Я не выдавал сертификат под-CA для Windows Enterprise CA, но не могу представить, почему он не будет работать (хотя в прошлом MS совершала более вопиющие антиконкурентные действия). Большой +1 для CA как VM. Хорошей идеей будет сохранить вторую копию корневого сертификата (Base64 на бумаге очень долговечен и его легко хранить в сейфе / сейфе / и т. Д.)
Chris S
Я был очень доволен собой, когда понял, что могу создать виртуальную машину без сетевых карт и просто использовать виртуальный дисковод гибких дисков, чтобы включить CSR и подписать сертификаты. Sneakernet возрождается с виртуальным блеском 21-го века!
dunxd