Aki*_*Aki 2 exchange outlook active-directory pgp
我希望为 Outlook 实现一个完全不需要配置的透明插件。我在想也许使用 Active Directory/Exchange 来存储每个用户的公钥,并能够像 Outlook 检索用户信息一样检索它。
我想避免依赖外部密钥服务器或必须添加更多基础设施来提供密钥。
是否可以以这种方式存储 PGP 密钥?存储它们以便从 Outlook 插件中检索它们的最简单方法是什么?
对的,这是可能的。但我能想到的使用 Active Directory 的唯一好方法是修改 AD 架构。修改 AD 架构是管理员回避做的事情之一,因为一,它基本上是不可逆的(“不可逆”,我的意思是没有权威还原),二,对生产 Active Directory 进行不可逆的更改会吓到许多管理员。如果您正在制作应用程序或插件,则必须考虑到如果需要修改 AD 架构,您的软件将不会被许多组织使用。
但是修改 AD 模式本身并不是一件坏事,只要我们有充分的理由去做。例如,安装 Microsoft Exchange 可扩展 AD 架构。很多。
我们知道 Active Directory 非常有能力并且非常适合存储此类数据(用户的公钥),因为如果您使用 PKI,它已经为用户存储了 X509 公钥。但我绝对不会试图征用那些现有属性之一,例如X509-Cert或User-Cert或thumbnailPhoto将您自己的自定义数据塞入其中。如果您的组织曾经想要使用 PKI 或其他产品,这些产品假定这些 AD 属性拥有它们设计用于存储的实际数据类型,那么这将导致问题。
有很多现有用户的属性,你可以潜入你的数据到如果你的数据是一个非常小串...... description, employeeID,telexNumber等等。但不会有太多的属性是适合于存储千字节或更多的数据。而那些通常已经被提及。
尽管如此,您可以在这里查看一下,看看您是否可以找到每个用户帐户上已经存在的属性,该属性可能能够保存 PGP 公钥并且不会干扰其他应用程序:
可能最好是您自己创建。
首先,在您的架构主机上打开注册表编辑器并编辑:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters
Schema Update Allowed (DWORD) 0x00000001
Run Code Online (Sandbox Code Playgroud)
您不必重新启动甚至重新启动 AD DS。
接下来,注册 AD 架构管理管理单元:
regsvr32 schmmgmt.dll
Run Code Online (Sandbox Code Playgroud)
打开 MMC 并添加 Active Directory 架构管理单元。

您必须为基于域的 OID 的新属性分配 X500 对象 OID。您可以使用此脚本为新架构属性生成新的 X500 OID:

请注意,最好为所有相关属性添加一个相同的前缀,例如“MyApp”。例如,所有 Active Directory 特定属性都有一个前缀,如“msDS”,而 DFS 复制特定属性将有一个“msDFSR”前缀等。您添加的与此软件相关的所有未来属性将使用相同的前缀,并且相同的 OID 前缀。
您可能不想索引此属性,因为搜索具有特定 PGP 公钥的用户对我来说听起来不像是常见的搜索。(如果您想将内容用作搜索词,您只能对其编制索引。)或者,如果您的林中有多个域,您可能希望复制到全局编录。请注意,如果您拥有大型域,这可能会导致索引和 GC 复制流量大幅增加。
接下来,您要将新属性分配给 Person 类:

现在,如果您检查用户的“属性编辑器”选项卡,您将看到他们有一个新属性供您编辑和查询。
一些后续作业给你:
编辑属性的默认安全性,以便只有帐户所有者(可能还有域管理员)可以更新他们自己帐户上的属性,而不能更新其他人的帐户。这样,您可以让您的 Outlook 插件自动为用户上传 PGP 公钥,假设他们的 Outlook 客户端在其安全上下文下运行。
为您的属性使用不同的语法。我在示例中使用的 Unicode 字符串语法对于 PGP 密钥之类的东西来说很糟糕,但我懒得回去只为您重复所有内容。:)
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |