Хранилище PGP включает Активный Каталог/Exchange?

Я надеюсь реализовывать прозрачный плагин для Outlook, которому не была бы нужна никакая конфигурация вообще. Я думал о, возможно, использовании Активного Каталога/Exchange, чтобы сохранить открытый ключ каждого пользователя и смочь получить его тот же путь, как Outlook получает информацию о пользователе.

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

Действительно ли возможно сохранить ключи PGP этот путь? Каков был бы самый легкий способ сохранить их для получения их от плагина Outlook?

2
задан 3 July 2014 в 06:24
1 ответ

Да, это возможно. Но единственный хороший способ, который я могу придумать, чтобы сделать это с помощью Active Directory - это изменить схему AD. Изменение схемы AD - это одна из тех вещей, которые администраторы стесняются делать, поскольку, во-первых, она, по сути, необратима (под "необратима" я имею в виду без авторитетного восстановления), а во-вторых, внесение необратимых изменений в производственную Active Directory пугает многих администраторов. Если бы вы делали приложение или плагин, вам пришлось бы учитывать, что ваше программное обеспечение не будет использоваться столькими организациями, если бы оно требовало модификации AD схемы.

Но модификация AD схемы сама по себе неплохая вещь, при условии, что у нас есть веские причины для этого. Установка Microsoft Exchange, например, расширяет AD схему. Очень.

Мы знаем, что Active Directory вполне способна и хорошо подходит для хранения такого рода данных (открытых ключей пользователей), потому что она уже хранит открытые ключи X509 для пользователей, если вы используете PKI. Но я определенно не буду пытаться использовать один из существующих атрибутов, таких как X509-Cert или User-Cert или thumbnailPhoto, чтобы запихивать в него свои собственные пользовательские данные. Это вызовет проблемы, если ваша организация когда-нибудь захочет использовать PKI или другие продукты, которые предполагают, что эти AD атрибуты содержат действительный тип данных, для хранения которых они были созданы.

Существует множество существующих пользовательских атрибутов, в которые вы можете проникать, если ваши данные представляют собой очень маленькую строку ... description, employeeID, telexNumber, etc. Но существует не так уж много атрибутов, которые подходят для хранения килобайта или более данных. И эти атрибуты обычно уже проговариваются.

Тем не менее, вы можете взглянуть сюда и посмотреть, можете ли вы найти атрибут, который уже существует на каждой учетной записи пользователя, который мог бы содержать публичные PGP ключи и не мешать другим приложениям:

Наверное, лучше всего создать свой собственный.

Сначала откройте Редактор реестра в мастере схем и отредактируйте:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
    Schema Update Allowed (DWORD) 0x00000001

Вам не нужно перезагружать или даже перезапускать AD DS.

Далее зарегистрируйте оснастку для управления схемами AD:

regsvr32 schmmgmt.dll

Откройте MMC и добавьте оснастку для управления схемами Active Directory.

Warning

Вам нужно присвоить X500 объекту OID к вашему новому атрибуту, который основан на OID вашего домена. Вы можете использовать этот скрипт для создания нового X500 OID для вашего нового атрибута схемы:

New Attribute

Обратите внимание, что это хорошая идея - префикс всех ваших родственных атрибутов с идентичным префиксом, таким как "MyApp". Например, все атрибуты, специфичные для Active Directory, имеют префикс типа "msDS", а атрибуты, специфичные для DFS Replication, будут иметь префикс "msDFSR" и т.д. Все будущие атрибуты, которые Вы добавите и которые относятся к данному ПО, будут использовать один и тот же префикс и тот же префикс OID.

Вероятно, Вы не захотите индексировать этот атрибут, так как поиск пользователя, у которого есть определенный PGP публичный ключ, не похож на обычный поиск. (Вы индексируете вещи, только если хотите использовать их в качестве поисковых терминов.) Или вы можете захотеть реплицировать их в глобальный каталог, если в вашем лесу несколько доменов. Остерегайтесь, что это может привести к значительному увеличению ваших индексов и трафика репликации GC, если у вас большой домен.

Далее вы хотите присвоить новый атрибут классу Person:

Add to Person

Теперь, если вы зайдете на вкладку Attribute Editor (Редактор атрибутов) ваших пользователей, вы увидите, что у них есть новый атрибут, который вы можете редактировать и запрашивать.

Некоторые дополнительные домашние задания для вас:

  • Редактирование безопасности по умолчанию в атрибуте, чтобы только владельцы учетных записей (и, возможно, администраторы домена) могли обновлять атрибут под своей учетной записью, и ни под чьей учетной записью. Таким образом, вы можете заставить ваш плагин Outlook автоматически загрузить PGP публичный ключ для пользователя, предполагая, что его клиент Outlook работает под его контекстом безопасности.

  • Используйте другой синтаксис для вашего атрибута. Синтаксис Unicode String, который я использовал в своем примере, отстой для чего-то вроде PGP ключа, но мне было лень вернуться назад и повторить все только для вас. :)

5
ответ дан 3 December 2019 в 09:36

Теги

Похожие вопросы