Cert Manager

注意:要显示特定设备上存在的功能,请从下面的 SmartDocs 栏中选择一个或多个过滤器。

StageNow - 2.10

概述

Certificate Manager (CertMgr) 管理设备上的证书和 Android 密钥库。CertMgr 可以初始化 Android 密钥库,安装或卸载 CA 证书到受信任存储区和 Android 密钥库,以及安装或卸载 CA 和/或客户端证书到 Android 密钥库。

主要功能

  • 初始化 Android 密钥库
  • 安装或卸载 CA 证书
  • 安装或卸载客户端证书

数字证书是一种电子文档,可用于证明断言的身份。通过拥有有效的公共证书及其匹配的私钥,一个实体可以断言身份,并通过证书验证各其他实体证明它有权断言该身份。证书验证基于对实体拥有与所断言身份的有效公共证书关联的私钥、并且证书是由可信认证中心 (CA) 颁发的确认。

要获取公共证书,实体必须先生成公钥/私钥对。然后,实体会将公钥以及身份信息提交到认证中心 (CA)。CA 验证请求者提供的身份信息,颁发一个包含所提交的公钥和身份信息的公共证书,使用它自己的私钥签署公共证书。CA 通过使用自己的私钥签署公共证书,使得信任该 CA 的其他实体在确认已获得该 CA 签名后便能够信任该公共证书。签名还使实体能够确认公共证书是原版,在该 CA 签名后未经过修改。

颁发的数字证书有特定的持续时间,通常称为有效期窗口。通常,如果当前日期不在证书的有效期窗口内,则认为该证书是无效的。此要求有两个重要含义。首先,它意味着使用数字证书的实体,尤其是执行证书验证的那些实体,必须知道正确的日期。其次,它意味着使用数字证书的实体必须定期刷新证书,将即将到期的证书(当前日期接近其有效期窗口的结束日期)替换为更新的、但兼容的证书(其中的身份信息相同,但当前日期离它的有效期窗口结束日期更远)。

Android 使用数字证书的最见方式有两种

  • 公共证书可用于建立设备或一些其他实体(如服务器)的信任。公共证书本身的最常见用途是建立对 CA 的信任,从而信任该 CA 颁发的所有证书。此类公共证书通常被称为 CA 证书。此外,可以使用公共证书验证要在设备上运行的应用程序来自可靠的开发人员,或验证设备所访问的服务器是真实的。
  • 此外,公共证书可以与私钥配对,使设备可以断言身份并向另一个实体证明。公共证书与私钥的这种配对通常称为客户端证书,因为它通常由设备上的某个客户端用来向服务器证明它所断言的身份。客户端证书可能用于向无线局域网(例如 EAP-TLS)或 Web 服务器(例如 HTTPS)验证设备的身份。

Zebra Android 设备可能将数字证书存储在两个主要区域

  • 受信任存储区,它是设备上只能存放 CA 证书的受保护区域。默认情况下设备中都存在受信任存储区,其中包含许多众所周知且普遍受信任的 CA 的 CA 证书。受信任存储区允许各种系统应用程序建立对颁发其他证书的 CA 的信任。

  • Android 密钥库,它是设备上能够存放 CA 证书和客户端证书的受保护区域。Android 密钥库必须先进行初始化,然后才能使用和着手清空。通过将 CA 证书添加到 Android 密钥库,可以建立对其他 CA 和服务器的信任。通过将客户端证书添加到 Android 密钥库,可以为设备提供断言和证明各种身份的能力。Android 密钥库只能初始化一次;重新初始化需要企业重置。

数字证书通常以各种格式的证书文件形式获取。唯一编码规则 (DER) 是一种用于对数字证书进行编码的标准方案。DER 可以直接用于将证书编码为二进制证书文件,通常文件扩展名为 .CER,但变体包括 .CRT 和 .DER。DER 还可以与 Base64 编码结合使用,按照增强型加密电子邮件 (PEM) 标准生成文本证书文件。证书文件仅对公共证书编码,从不对私钥编码。

私钥通常以按照 PEM 编码标准编码的文本密钥文件形式生成或获取。对客户端证书的一种常见做法是使用公钥密码标准 (PKCS) 标准 PKCS12 将公共证书和匹配的私钥组合成一个容器文件。PKCS12 是一种存档文件格式,用来将多种密码对象存储为单个二进制文件,通常文件扩展名为 .PKCS12、.P12 或 .PFX。按照 PKCS12 标准构造的容器文件通常用一个密码加密,以保护其中包含的私钥。加密的容器文件需要提供原始密码才能对其进行处理。

证书操作

用于安装或卸载证书或初始化 Android 密钥库。如果安装了一个证书,它的别名与密钥库中已有证书的别名相同,现有证书会被新证书覆盖。

注意:Android 密钥库只能“初始化”一次;之后使用“初始化 Android 密钥库”功能将只是重置密码,密钥库不会受到影响。要将 Android 密钥库恢复到初始化之前的状态,请参见 Power Manager 的企业重置和恢复出厂设置功能。

参数名称:CertAction

选项 名称 说明需要
1 安装证书 在设备上安装指定的证书。

OSX:1.0+

MX:4.1+

2 卸载证书 从设备中删除指定的证书。

OSX:1.0+

MX:4.1+

3 初始化 Android 密钥库 导致新 Android 密钥库被初始化或密码重置(参见以上注释)。

OSX:1.0+

MX:4.2+

证书别名

此参数允许您指定要用来识别某个证书的别名。安装证书时,指定的别名与证书以及客户端证书的对应私钥相关联。如果已存在具有相同别名的证书,它将被替换。卸载证书时,应指定与以前安装的证书相关联的别名。如果找到匹配,匹配的证书将被删除。如果试图卸载未找到匹配的证书,则会在结果 XML 中返回错误。

参数值输入规则:

  • 最小长度为 1 个字符的字符串

参数名称:CertAlias

需要:

  • OSX:1.0+
  • MX:4.1+

证书类型

此参数用于指定要安装的证书类型。

注意:Android 密钥库必须先进行一次初始化,然后才能使用 CertMgr 安装或卸载证书。Android 密钥库可以使用 CertMgr 或由设备用户通过系统设置菜单进行初始化。

在以下条件下显示:证书操作是“安装证书”

参数名称:CertType

选项 名称 说明需要
5 CA 证书(.PEM文件) 此值表示要安装的证书是要添加到受信任存储区和 Android 密钥库的 CA 证书(包含在 .PEM 或 .CER 文件中)。

OSX:1.0+

MX:4.1+

6 客户端证书(.PEM 文件) 此值表示要安装的证书是仅用于只添加到 Android 密钥库的客户端证书的公共证书(包含在 .PEM 或 .CER 文件中)。

OSX:1.0+

MX:4.1+

8 客户端证书和私钥(.PFX 文件) 此值表示要安装的证书是用于只添加到 Android 密钥库的客户端证书的公共证书和私钥(包含在 .PFX 中)。

OSX:1.0+

MX:4.1+

9 客户端证书和私钥(.P12 文件) 此值表示要安装的证书是用于只添加到 Android 密钥库的客户端证书的公共证书和私钥(包含在 .P12 文件中)。

OSX:1.0+

MX:4.1+

10 客户端证书和私钥(.PKCS12 文件) 此值表示要安装的证书是用于只添加到 Android 密钥库的客户端证书的公共证书和私钥(包含在 .PKCS12 文件中)。

OSX:1.0+

MX:4.1+

证书方法

此参数用于指定要用来安装证书的方法。

在以下条件下显示:证书操作是“安装证书”

参数名称:CertMethod

选项 名称 说明需要
2 参考证书文件 此值表示要安装的证书的数据包含在设备文件系统中存在的某个文件中。

OSX:1.0+

MX:4.1+

证书文件 CA

此参数允许您指定设备文件系统中包含要安装的证书的数据的文件的路径和名称。如果尝试使用一个不存在、不可读取或未表示包含指定类型有效证书数据的文件的路径或名称来安装证书,则会在结果 XML 中返回错误。

如果证书操作是“安装证书”并且证书方法是“参考证书文件”并且证书类型为“CA 证书(.PEM 文件)”

参数值输入规则:

  • 最小长度为 1 个字符,最大长度为 255 个字符的字符串

在以下条件下显示:如果证书操作是“安装证书”并且证书方法是“参考证书文件”并且证书类型为“客户端证书(.PEM 文件)”或“客户端证书和私钥(.PFX 文件)”或“客户端证书和私钥(.P12 文件)”或“客户端证书和私钥(.PKCS12 文件)”

参数名称:CertFileCA

需要:

  • OSX:1.0+
  • MX:4.1+

证书文件客户端

用于指定设备文件系统中包含要安装的证书的数据的文件的路径和名称。如果尝试使用一个不存在、不可读取或未表示包含指定类型有效证书数据的文件的路径或名称来安装证书,则会在结果 XML 中返回错误。

如果证书操作是“安装证书”并且证书方法是“参考证书文件”并且证书类型为“CA 证书(.PEM 文件)”

参数值输入规则:

  • 最小长度为 1 个字符,最大长度为 255 个字符的字符串

参数名称:CertFileClient

需要:

  • OSX:1.0+
  • MX:4.1+

调节时钟

此参数使您可以指定在设备当前日期在证书有效期窗口之外时如果安装证书,是否自动调整设备时钟。

注意:此选项使您可以解决如下问题:设备可能无法使用证书连接到网络(例如 EAP-TLS),因为设备上的日期设置不正确(因为它可能是新开箱的设备),因此证书似乎无效(已过期或尚未生效)。如果此参数的值为“true”,日期在所安装证书的有效期窗口之外,设备的日期将被更改为证书有效期窗口的开始日期。一个常见的使用案例是使用此选项允许要使用的证书加入网络,然后通过该网络获取真正的日期和时间(请参见时钟)。

参数值输入规则:

  • 值为“true”或“false”的字符串。

参数名称:CertAdjustClock

需要:

  • MX:4.2+
  • Android API:1.0+

密钥库密码

用于指定将用于初始化 Android 密钥库的密码。指定空值(零长度)(或 XML 中缺少此参数)将导致生成一个随机密码来初始化 Android 密钥库。

注意:一旦成功初始化 Android 密钥库后,就不再需要向 CertMgr 提供此密码,因为它能够在不提供此密码的情况下安装和卸载证书。但设备用户可能需要知道此密码,才能使用“系统设置”菜单来管理证书。如果密码丢失,或者如果生成了随机密码,则无法为设备用户提供该密码,从而使得设备用户不能执行此类管理。这通常不是问题,因为证书管理通常是最好留给 MDM 的一项功能,而且最好是阻止设备用户执行此类功能。

参数值输入规则:

  • 最小长度为 1 个字符,最大长度为 32 个字符的字符串

在以下条件下显示:证书操作是“初始化 Android 密钥库”

参数名称:KeystorePassword

需要:

  • OSX:1.0+
  • MX:4.1+

私钥密码

用于指定对包含客户端证书的公共证书和私钥的容器文件进行解密时所需的密码。

注意:如果试图使用未加密或未使用指定密码加密的容器文件,将会在结果 XML 中返回错误。

参数值输入规则:

  • 最小长度为 1 个字符,最大长度为 32 个字符的字符串

在以下条件下显示:证书操作是“安装证书”*并且*证书类型为“客户端证书和私钥(.PFX 文件)”或“客户端证书和私钥(.P12 文件)”或“客户端证书和私钥(.PKCS12 文件)”

参数名称:PrivateKeyPassword

需要:

  • OSX:1.0+
  • MX:4.1+

示例

初始化 Android 密钥库

Android 密钥库必须先进行一次初始化,然后才能安装或卸载证书。如果设备用户未通过“系统设置”菜单初始化 Android 密钥库,并且此前未使用 CertMgr 初始化 Android 密钥库,则应该使用 CertMgr 初始化 Android 密钥库,如下所示:

不使用密码:

<wap-provisioningdoc><characteristic type="CertMgr" version="4.2" ><parm name="CertAction" value="4"/></characteristic></wap-provisioningdoc>

使用密码:

<wap-provisioningdoc><characteristic type="CertMgr" version="4.2" ><parm name="CertAction" value="4"/><characteristic type="keystore-details"><parm name="KeystorePassword" value="mobility"/></characteristic></characteristic></wap-provisioningdoc>

安装 CA 证书(.PEM 文件)

<wap-provisioningdoc><characteristic type="CertMgr" version="4.2" ><parm name="CertAction" value="1"/><characteristic type="cert-details"><parm name="CertAlias" value="mxtest"/><parm name="CertType" value="5"/><parm name="CertMethod" value="2"/><parm name="CertFileCA" value="/enterprise/usr/persist/test.pem"/><parm name="CertAdjustClock" value="false"/></characteristic></characteristic></wap-provisioningdoc>

注意:以上 XML 只需更改一下文件名,就可用于从 .CER 或 .DER 文件安装 CA 证书,因为全都采用 DER 编码,因此支持相同类型。

安装客户端证书(.PEM 文件)

<wap-provisioningdoc><characteristic type="CertMgr" version="4.2" ><parm name="CertAction" value="1"/><characteristic type="cert-details"><parm name="CertAlias" value="mxtest"/><parm name="CertType" value="6"/><parm name="CertMethod" value="2"/><parm name="CertFileClient" value="/enterprise/usr/persist/test.pem"/><parm name="CertAdjustClock" value="false"/></characteristic></characteristic></wap-provisioningdoc>

注意:以上 XML 通常不用于安装全新的客户端证书,因为它只安装公共证书,不安装私钥。可能使用以上 XML 的主要情形是:以前安装了公共证书和私钥,如下一个示例所述,并且需要替换公共证书(例如在过期前更新)。在这种情况下,如果公共证书和私钥都未更改,最好是更新公共证书,保留私钥不变。

安装客户端证书和私钥(.PFX 文件)

<wap-provisioningdoc><characteristic type="CertMgr" version="4.2" ><parm name="CertAction" value="1"/><characteristic type="cert-details"><parm name="CertAlias" value="mxtest"/><parm name="CertType" value="8"/><parm name="CertMethod" value="2"/><parm name="CertFileClient" value="/enterprise/usr/persist/test.pfx"/><parm name="CertAdjustClock" value="false"/><parm name="PrivateKeyPassword" value="mobility"/></characteristic></characteristic></wap-provisioningdoc>

注意:以上 XML 只需更改一下文件名,就可用于从 .P12 或 .PKCS12 文件安装客户端证书和私钥,因为全都采用 PKCS12 编码,因此支持相同类型。

删除证书

<wap-provisioningdoc><characteristic type="CertMgr" version="4.2" ><parm name="CertAction" value="2"/><characteristic type="cert-details"><parm name="CertAlias" value="mxtest"/></characteristic></characteristic></wap-provisioningdoc>