本文档已存档,并且将不进行维护。

证书和密钥

发布时间: 2011年4月

更新时间: 2015年6月

应用到: Azure

Microsoft Azure Active Directory 访问控制(也称为访问控制服务或 ACS) 提供了两种不同的方式来对令牌进行签名和加密:具有私钥的 X.509 证书和 256 位对称密钥。你可以配置每个证书或密钥,以便为特定信赖方应用程序或命名空间中的所有信赖方应用程序的令牌签名,并且可以将证书和密钥指定为主证书/密钥或辅助证书/密钥。若要添加和配置令牌签名、加密证书和密钥及解密证书和密钥,请使用 ACS 管理服务或 ACS 管理门户。

ACS 会使用 X.509 证书(带私钥)或 256 位对称密钥为它颁发的所有安全令牌签名。对签名凭据类型(证书或密钥)的选择取决于你为 ACS 颁发的令牌选择的令牌格式。有关详细信息,请参阅信赖方应用程序中的“令牌签名”。选择要创建哪种类型的签名凭据时,请考虑以下内容:

  • SAML 令牌使用 X.509 证书进行签名。SAML 是基于 Windows Identity Foundation (WIF) 构建的应用程序默认使用的令牌格式。SAML 令牌可以通过多个协议(如 WS 联合身份验证和 WS 信任)颁发。

  • SWT 令牌使用 256 位对称密钥进行签名。SWT 令牌可以通过多个协议(如 OAuth WRAP 和 WS 联合身份验证)颁发。

  • JWT 令牌可以由 X.509 证书或 256 位对称密钥签名。JWT 令牌可以通过多个协议(如 WS 联合身份验证、WS 信任和 OAuth 2.0)颁发。

你可以配置签名证书或对称密钥,使该证书或密钥可用于整个 “访问控制”命名空间或只可用于命名空间中的特定信赖方应用程序。不同之处如下所示:

  • “访问控制”命名空间 - 当为整个 “访问控制”命名空间配置签名证书或密钥时,ACS 使用该证书或密钥为此命名空间中没有特定于应用程序的证书或密钥的所有信赖方应用程序的令牌签名。命名空间范围的证书也用于为 ACS WS 联合身份验证元数据签名。

  • 专用 - 如果你配置要用于特定信赖方应用程序的签名证书或密钥,则 ACS 只使用签名证书或密钥为传递给指定信赖方应用程序的令牌签名。

    如果你创建或输入专用对称密钥,则 ACS 将使用专用密钥为应用程序的令牌签名。如果专用密钥过期且未更换,则 ACS 将使用 “访问控制”命名空间的对称密钥为应用程序的令牌签名。

note备注
  • 安全的最佳做法是,使用对称密钥时,为每个信赖方应用程序都创建一个专用密钥。X.509 证书可以由 “访问控制”命名空间中的多个应用程序安全地共享。

  • 当你将 Microsoft 管理的信赖方应用程序添加到托管命名空间(如将 Service Bus 信赖方应用程序添加到 Service Bus 命名空间)时,请勿使用特定于应用程序的(专用的)证书或密钥,而应选择 ACS 选项,以使用为托管命名空间中的所有应用程序配置的证书和密钥。对于所有其他信赖方应用程序,请使用特定于应用程序的证书和密钥。有关详细信息,请参阅托管命名空间

  • 当你配置一个信赖方应用程序,而该应用程序将 X.509 证书用于 “访问控制”命名空间进行 JWT 令牌签名时,“访问控制”命名空间 证书和 “访问控制”命名空间密钥的链接将显示在 ACS 管理门户中信赖方应用程序页上。但是,ACS 只使用命名空间证书为信赖方应用程序的令牌签名。

签名证书通常用于为命名空间中所有信赖方应用程序的令牌签名。命名空间签名证书的公钥组件将发布在 ACS WS 联合身份验证元数据中,因此信赖方应用程序可自动执行其配置。只分配给特定信赖方应用程序的证书公钥不存在于 ACS WS 联合身份验证元数据中,并且仅当需要对信赖方应用程序的签名证书进行独立控制时才使用。

在 ACS 中,你可以维护几个证书和密钥,但只使用指定的证书和密钥为令牌签名。指定用于签名的证书和密钥称为证书和密钥。

若要将证书或密钥指定为主证书或密钥,请在该证书或密钥的页上选择“设为主证书或密钥”项。若要将其他证书指定为主证书,请在其他证书或密钥的页上选择“设为主证书或密钥”项。如果你这样做,ACS 会自动将任何现有主证书或密钥降级为非主证书或密钥。

当至少有一个证书或密钥是主证书或密钥时,非主证书和密钥不能用于签名(除非管理员将它们提升为主证书和密钥状态),即使主证书或密钥无效或已过期,也是如此。但是,如果没有证书(或密钥)是主证书(或密钥),则 ACS 将使用有效开始日期最早的非主证书。

主证书和非主证书的公钥组件都发布在 ACS WS 联合身份验证元数据中,以便通过编程方式对证书进行滚动更新。但是,ACS 只使用主证书和密钥为令牌签名。

在添加 256 位对称签名密钥时,还必须指定生效日期和到期日期。生效日期是指此密钥生效的日期。到期日期是指此密钥到期的日期,不能使用到期密钥为令牌签名。

在 ACS 中,你可以选择加密 ACS 为信赖方应用程序颁发的任何 SAML 1.1 或 SAML 2.0 令牌。

Important重要提示
ACS 不支持加密 SWT 或 JWT 令牌。

令牌加密对于通过 WS 信任协议使用拥有证明令牌的 Web 服务是必需的。如果你使用 ACS 来管理这种信赖方应用程序的身份验证,此信赖方应用程序的所有由 ACS 颁发的令牌都必须加密。在所有其他情况下,令牌加密是可选的。

ACS 使用包含公钥的 X.509 证书(.cer 文件)加密 SAML 令牌。信赖方应用程序令牌使用该 X.509 证书的私钥来解密令牌。有关详细信息,请参阅信赖方应用程序中的“令牌加密”。

ACS 可以接受 WS 联合身份验证标识提供程序(如 )颁发的加密令牌。WS 联合身份验证标识提供程序在从 ACS 导入 WS 联合身份验证元数据时接收 X.509 证书的公钥,然后使用此公钥加密转发到 ACS 的安全令牌。ACS 将使用此 X.509 证书的私钥解密该令牌。有关详细信息,请参阅操作方法:将 AD FS 2.0 配置为标识提供程序

你可以为信赖方应用程序或 “访问控制”命名空间维护多个令牌解密证书。当你将证书指定为证书时,ACS 将使用该证书解密 WS 联合身份验证标识提供程序颁发的令牌,并且仅在尝试使用主证书失败时才使用非主证书。

若要将解密证书指定为主证书,请在该证书的页上选择“设为主证书或密钥”项。若要将其他证书指定为主证书,请在其他证书的页上选择“设为主证书或密钥”项。如果你这样做,ACS 会自动将任何现有主解密证书降级为非主证书。

在 ACS 中创建服务标识、验证标识提供程序的签名或加密 SAML 令牌时,可以使用仅包含公钥的 X.509 证书(.cer 文件)。仅包含公钥的 X.509 证书文件(.cer 文件)必须经过 DER 编码才能用于 ACS。目前不支持 Base64 编码的证书文件。如果将 base64 编码的证书上载到 ACS,则当 ACS 收到需要该证书的传入令牌时,将导致验证错误。

在 ACS 中,X.509 证书必须经过自签名,或者在签名后直接链接到公共证书颁发机构。ACS 将不会使用私有证书颁发机构颁发的证书。

note备注
导入到 ACS 中的 X.509 证书不能过期。

有几种方法可以获取用于令牌签名、令牌加密或解密的 X.509 证书。你使用的方法取决于你的需求和你组织提供的工具。

商业证书颁发机构 - 你可以从商业证书颁发机构购买 X.509 证书。

生成自签名证书 - 你可以生成自己的用于 ACS 的自签名证书。如果你运行的是基于 Windows 的操作系统,则可以使用 Microsoft Windows 软件开发工具包 (http://go.microsoft.com/fwlink/?LinkID=214104) 中提供的工具 MakeCert.exe 来生成自签名证书。

例如,以下命令在你的个人证书存储中生成自签名证书。

MakeCert.exe -r -pe -n "CN=<service_namespace_name>.accesscontrol.windows.net" -sky exchange -ss my -len 2048 –e <1 year from today>

其中 <service_namespace_name> 是你的 “访问控制”命名空间的名称。

然后,你可以从个人存储中导出私钥作为 .pfx 文件,并使用 ACS 管理门户将该文件上载到 ACS。

这些说明解释了如何从运行 Windows 8、Windows Server 2012、 或 的计算机中导出自签名证书。

  1. 启动 MMC.exe 并将“证书”管理单元添加到 MMC 控制台。

  2. 依次双击“证书 - 当前用户”“个人”“证书”

  3. 右键单击某一证书,单击“所有任务”,然后单击“导出”

  4. 在“证书导出向导”欢迎页上,单击“下一步”。

  5. “导出私钥”页上,单击“是,导出私钥”,然后单击“下一步”

  6. 在“导出文件格式”页上,单击“个人信息交换 - PKCS #12 (.PFX)”。

  7. “密码”字段中,输入密码和确认密码,然后单击“下一步”

  8. “文件名”字段中,输入路径和带 .pfx 文件扩展名的文件名,然后单击“下一步”

  9. 单击“完成”

ACS 使用协调世界时 (UTC) 评估证书和密钥的开始日期和结束日期(以及日期时间)。因此,即使密钥和证书按本地计算机的本地时间或按另一个时区计算有效,ACS 也有可能将其视为无效。

若要立即确保证书或密钥有效,请将日期调整为 UTC 时间。否则,ACS 可能无法颁发令牌,因为密钥或证书尚未生效。

另请参阅

显示: