应用程序包开发者指南

证书管理

在创建带签名的软件包之前,您必须有软件包密钥库。此软件包密钥库以对象形式包含证书。软件包密钥库中存在两种类型的对象:

受信任证书

受信任证书包含属于其他实体的一个公钥证书。之所以这样命名受信任证书,是因为密钥库属主相信证书中的公钥确实属于由证书的“主题”(所有者)指定的身份。证书的颁发者通过对证书进行签名来确保证书的真实性。

验证签名以及启动与安全 (SSL) 服务器的连接时将使用受信任证书。

用户密钥

用户密钥用于存放敏感的加密密钥信息。加密密钥信息以受保护的格式存储,可防止进行未经授权的访问。用户密钥中既包含用户的私钥又包含与私钥相对应的公钥证书。

创建带签名的软件包时将使用用户密钥。

缺省情况下,软件包密钥库存储在 /var/sadm/security 目录中。缺省情况下各用户也可将自己的密钥库存储在 $HOME/.pkg/security 目录中。

在磁盘上,软件包密钥库可以采用两种格式: 多文件格式和单文件格式。多文件格式将其对象存储在多个文件中。每种类型的对象存储在单独的文件中。必须使用相同的口令短语对所有这些文件进行加密。单文件密钥库将其所有对象存储在文件系统上的单个文件中。

用于管理证书和软件包密钥库的主要实用程序是 pkgadm 命令。以下各小节介绍了用于管理软件包密钥库的更为常见的任务。

将受信任证书添加到软件包密钥库

可以使用 pkgadm 命令将受信任证书添加到软件包密钥库。证书可以是 PEM 或 DER 格式。例如:


$ pkgadm addcert -t /tmp/mytrustedcert.pem

在此示例中,名为 mytrustedcert.pem 的 PEM 格式证书会添加到软件包密钥库中。

将用户证书和私钥添加到软件包密钥库

pkgadm 命令不会生成用户证书或私钥。用户证书和私钥通常从证书颁发机构(例如 Verisign)获得。此外也可作为自行签名的证书在本地生成。一旦获取了私钥和证书,即可使用 pkgadm 命令将其导入到软件包密钥库中。例如:


pkgadm addcert -n myname -e /tmp/myprivkey.pem /tmp/mypubcert.pem

在此示例中,使用了以下选项:

-n myname

标识软件包密钥库中您希望处理的实体 (myname)。myname 实体成为对象存储时所用的别名。

-e /tmp/myprivkey.pem

指定包含私钥的文件。在本例中,文件是 myprivkey.pem,位于 /tmp 目录。

/tmp/mypubcert.pem

指定名为 mypubcert.pem 的 PEM 格式证书文件。

检验软件包密钥库中的内容

pkgadm 命令还可用于查看软件包密钥库的内容。例如:


$ pkgadm listcert

此命令显示软件包密钥库中的受信任证书和私钥。

从软件包密钥库中删除受信任证书和私钥

pkgadm 命令可用于从软件包密钥库中删除受信任证书和私钥。

删除用户证书时,必须指定证书/密钥对的别名。例如:


$ pkgadm removecert -n myname

证书的别名是证书的通用名称,可使用 pkgadm listcert 命令标识。例如,以下命令删除一个名为 Trusted CA Cert 1 的受信任证书:


$ pkgadm removecert -n "Trusted CA Cert 1"

注 –

如果使用同一别名存储了受信任证书和用户证书,则指定 -n 选项时会将其同时删除。