Я хочу реализовать прозрачный плагин для Outlook, который вообще не требует настройки. Я думал, возможно, использовать Active Directory / Exchange для хранения открытого ключа каждого пользователя и иметь возможность извлекать его так же, как Outlook извлекает информацию о пользователе.
Я бы не хотел полагаться на внешний сервер ключей и не добавлять дополнительную инфраструктуру для обслуживания ключей.
Можно ли таким образом хранить ключи PGP? Каким будет самый простой способ сохранить их, чтобы извлечь из плагина Outlook?
Да, это возможно. Но единственный хороший способ, который я могу придумать с помощью 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
и т. д. Но существует не так много атрибутов, которые подходят для хранения килобайта или более данных. И о них обычно уже говорят.
Тем не менее, вы можете взглянуть сюда и посмотреть, сможете ли вы найти атрибут, который уже существует в каждой учетной записи пользователя, который мог бы хранить открытые ключи PGP и не мешать другим приложениям:
Наверное, лучше всего, если ты создашь свой собственный
Сначала откройте редактор реестра на своем хозяине схемы и отредактируйте:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
Schema Update Allowed (DWORD) 0x00000001
Вам не нужно перезагружать или даже перезапускать AD DS.
Затем зарегистрируйте оснастку управления схемой AD:
regsvr32 schmmgmt.dll
Откройте MMC и добавьте оснастку схемы Active Directory.
Вы должны назначить OID объекта X500 вашему новому атрибуту, основанному на OID вашего домена. Вы можете использовать этот скрипт для генерации нового OID X500 для вашего нового атрибута схемы:
Обратите внимание, что рекомендуется использовать одинаковый префикс для всех связанных атрибутов, например «MyApp». Например, все атрибуты, относящиеся к Active Directory, имеют префикс типа «msDS», а атрибуты репликации DFS будут иметь префикс «msDFSR» и т. Д. Все будущие атрибуты, которые вы добавляете, относящиеся к этому программному обеспечению, будут использовать тот же префикс и тот же префикс OID.
Вероятно, вы не хотите индексировать этот атрибут, поскольку поиск пользователя, у которого есть определенный открытый ключ PGP, для меня не похож на обычный поиск. (Вы индексируете вещи только в том случае, если хотите использовать их в качестве условий поиска.) Или вы можете захотеть выполнить репликацию в глобальный каталог, если у вас есть несколько доменов в вашем лесу. Помните, что это может привести к значительному увеличению трафика репликации индексов и GC, если у вас большой домен.
Затем вы хотите назначить новый атрибут классу Person:
Теперь, если вы проверите вкладку редактора атрибутов для своих пользователей, вы увидите, что у них есть новый атрибут, который вы можете редактировать и запрашивать.
Некоторые дополнительные домашние задания для вас:
Измените безопасность по умолчанию для атрибута, чтобы только владельцы учетных записей (и, возможно, администраторы домена) могли обновлять атрибут в своей учетной записи, а не в чужой. Таким образом, ваш плагин Outlook может автоматически загружать открытый ключ PGP для пользователя, предполагая, что его клиент Outlook работает в контексте безопасности.
Используйте другой синтаксис для вашего атрибута. Синтаксис Unicode String, который я использовал в моем примере, отстой для чего-то вроде ключа PGP, но мне было лень вернуться и повторить все только для вас. :)