手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

ikecert(1M)

名称

ikecert - 处理计算机文件系统上的公钥证书数据库

用法概要

ikecert certlocal 
     [-a | -e | -h | 
-k | -l | -r | -U | 
-C | -L] 
     [[-p] -T PKCS#11 token identifier
] 
     [option_specific_arguments]...
ikecert certdb [-a | -e | 
-h | -l | -r | -U | 
-C | -L] 
     [[-p] -T PKCS#11 token identifier
] 
     [option_specific_arguments]...
ikecert certrldb [-a | -e
 | -h | -l | -r] 
     [option_specific_arguments]...
ikecert tokens

描述

ikecert 命令处理计算机文件系统上的公钥证书数据库。请参见下文的“文件”部分。

ikecert 有三个子命令分别对应于三个主要系统信息库,还有一个子命令用于列出可用硬件令牌:

  • certlocal,用于处理私钥系统信息库

  • certdb,用于处理公钥系统信息库

  • certrldb,用于处理证书撤销列表 (certificate revocation list, CRL) 系统信息库。

  • tokens,用于显示给定 PKCS#11 库的可用 PKCS#11 令牌。

支持的唯一 PKCS#11 库和硬件是 Sun Cryptographic Accelerator 4000。

选项

tokens 以外,每个子命令都需要一个选项,后面可能跟有一个或多个特定于选项的参数。

tokens 子命令列出 /etc/inet/ike/config 中指定的 PKCS#11 库中的所有可用令牌。

支持以下选项:

–a
certlocal

当随 certlocal 子命令一起指定时,此选项将私钥安装(添加)到 Internet 密钥交换 (Internet Key Exchange, IKE) 本地 ID 数据库中。密钥数据从标准输入读取,并且采用仅限 Solaris 的格式或未加密的 PKCS#8 DER 格式。自动检测密钥格式。无法识别 PEM 格式的 PKCS#8 密钥文件和受口令保护的加密格式的文件,但可以使用 OpenSSL 中提供的工具对这些文件进行相应转换。

当对应的公共证书已不在 IKE 数据库中时,此选项不能用于 PKCS#11 硬件对象。当同时导入公共证书和私钥时,必须首先使用 certdb 子命令导入公共证书。

certdb

当随 certdb 子命令一起指定时,此选项从标准输入读取证书,并将其添加到 IKE 证书数据库。该证书必须是采用 PEM Base64ASN.1 BER 编码的 X.509 证书。证书采用其标识名称。

此选项可采用下列两种方法之一将证书导入到 PKCS#11 硬件密钥存储:使用 certlocal – kc 选项创建匹配的公钥对象和现有私钥对象,或者如果明确指定了 PKCS#11 令牌,则使用 – T 选项。

certrldb

当随 certrldb 子命令一起指定时,此选项将 CRL 安装(添加)到 IKE 数据库中。CRL 从标准输入读取。

–e [–f pkcs8] slot
certlocal

当随 certlocal 子命令一起指定时,此选项从 IKE 本地 ID 数据库中提取私钥。密钥数据写入到标准输出。插槽指定要提取的私钥。私钥仅以二进制/ber 格式提取。

请慎用此选项。请参见下文的“安全”部分。

此选项不适用于 PKCS#11 硬件对象。

当与 –f pkcs8 结合使用时,将以未加密的 PKCS#8 格式提取私钥。

–e [–f output-format ] certspec
certdb

当随 certdb 子命令一起指定时,此选项从与 certspec 匹配的 IKE 证书数据库中提取证书,并将其写入到标准输出。output-format 选项指定编码格式。有效选项包括 PEMBER。它会提取第一个匹配的标识。缺省输出格式为 PEM

certrldb

当随 certrldb 子命令一起指定时,此选项从 IKE 数据库提取 CRL。密钥数据写入到标准输出。certspec 指定提取的 CRL。将提取数据库中的第一个匹配 CRL。有关 certspec 模式的详细信息,请参见下文的“附注”部分。

–kc –m keysize – t keytype –D dname –A altname[ ... ]
[–S validity start_time][– F validity end_time]
[–T PKCS#11 token identifier]
certlocal

当随 certlocal 子命令一起指定时,此选项生成一个 IKE 公钥/私钥对,并将其添加到本地 ID 数据库。此外,它还会生成证书请求,并将其发送到标准输出。有关上述选项的详细信息,请参见Notes以获取有关 dname 参数的详细信息,并参见“替代名称”了解有关此命令的 altname 参数的详细信息。

如果指定了 –T,硬件令牌将生成密钥对。

如果与 –T 一起指定了 –p,则会将 PKCS#11 令牌个人识别码存储在明确磁盘上,并具有受 root 保护的文件权限。如果未指定,用户必须在运行 in.iked(1M) 时使用 ikeadm(1M) 解除令牌的锁定。

–ks –m keysize – t keytype –D dname –A altname[ ... ]
[–S validity start_time][– F validity end_time]
[–f output-format][[–p] –T PKCS#11 token identifier]
certlocal

当随 certlocal 子命令一起指定时,此选项生成一个公钥/私钥对,并将其添加到本地 ID 数据库。此外,此选项还会生成一个自签名证书,并将其安装到证书数据库。有关此命令的 dnamealtname 参数的详细信息,请参见下文的“附注”部分。

如果指定了 –T,硬件令牌将生成密钥对,并将自签名证书存储到此硬件中。

–l [–v] [slot]
certlocal

当随 certrldb 子命令一起指定时,此选项列出本地 ID 数据库中的私钥。–v 选项将输出切换到详细模式,在此模式下将输出完整证书。

请慎用 –v 选项。请参见下文的“安全”部分。–v 选项不适用于 PKCS#11 硬件对象。

–l [–v] [certspec]
certdb

当随 certdb 子命令一起指定时,此选项列出 IKE 证书数据库中与 certspec 匹配的的证书(如果指定了任何模式)。此列表显示证书的标识字符串以及私钥(如果位于密钥数据库中)。–v 将输出切换到详细模式,在此模式下将输出完整证书。

如果匹配的证书位于硬件令牌上,则还会列出令牌 ID。

certrldb

当随 certrldb 子命令一起指定时,此选项列出 IKE 数据库中的 CRL 以及位于此数据库中且与颁发机构名称匹配的所有证书。certspec 可用于指定列出特定 CRL。–v 选项将输出切换到详细模式,在此模式下将输出完整证书。有关 certspec 模式的详细信息,请参见下文的“附注”部分。

–r slot
certlocal

当随 certlocal 子命令一起指定时,此选项删除指定插槽中的本地 ID。如果存在对应的公钥,则不会删除此 ID。如果此插槽被视为“已损坏”或无法识别,则也会删除此 ID。

如果对 PKCS#11 硬件对象调用了此选项,则还会删除 PKCS#11 公钥和私钥对象。如果已使用 certdb –r 删除公钥对象,则不会导致问题。

–r certspec
certdb

从 IKE 证书数据库删除证书。会删除与指定证书模式匹配的证书。不会删除 certlocal 数据库中与这些证书对应的任何私钥。这会删除第一个匹配的标识。

如果模式指定了一个插槽,并且此插槽被视为“已损坏”或无法识别,则也会删除该插槽。

如果对 PKCS#11 硬件对象调用了此选项,则还会删除证书和 PKCS#11 公钥对象。如果已使用 certlocal –r 删除公钥对象,则不会导致问题。

certrldb

当随 certrldb 子命令一起指定时,此选项删除具有给定 certspec 的 CRL。

–U slot
certlocal

当随 certlocal 子命令和 –T 标志一起指定时,此选项会解除 PKCS#11 私钥对象与 IKE 数据库之间的链接。系统不会尝试访问硬件 Keystore 或者验证或删除令牌上的私钥对象,而仅仅取消此对象与 IKE 数据库之间的关联。

certdb

当随 certdb 子命令和 –T 标志一起指定时,此选项会解除 PKCS#11 证书对象与 IKE 数据库之间的链接。系统不会尝试访问硬件 Keystore 或者验证或删除令牌上的证书或公钥对象,而仅仅取消这些对象与 IKE 数据库之间的关联。

–C certspec
certlocal

当随 certlocal 子命令一起指定时,此选项从磁盘上的 Keystore 将私钥(及其相应证书)和公钥复制到其 PKCS#11 令牌指定的硬件 Keystore。此子命令尝试创建其中每个组件,即使某个组件创建失败也是如此。在所有情况下,仍会保留磁盘上的原始私钥和公共证书,因此必须单独删除它们。某些硬件 Keystore(例如,符合 FIPS-140 的设备)可能不支持以此种方式迁移私钥对象。

certdb

当随 certdb 子命令一起指定时,此选项将与给定 certspec 匹配的证书及相应公钥从磁盘上的 Keystore 复制到其 PKCS#11 令牌指定的硬件 Keystore。系统仍会保留原始公共证书,因此必须根据需要单独删除这些证书。

如果指定了 –p,则会将 PKCS#11 令牌个人识别码存储在明确磁盘上,并具有受 root 保护的文件权限。如果未指定,用户必须在运行 in.iked(1M) 时使用 ikeadm(1M) 解除令牌的锁定。

–L pattern
certlocal

当随 certlocal 子命令一起指定时,此选项将现有令牌上的私钥对象链接到 IKE 数据库。此对象本身保留在令牌中。此选项只是让 IKE 基础结构了解对象是否存在,就像最初使用 Solaris IKE 实用程序在令牌上创建了此对象一样。

certdb

当随 certdb 子命令一起指定时,此选项将现有令牌上的证书对象链接到 IKE 数据库。此对象本身保留在令牌中。此选项只是让 IKE 基础结构了解对象是否存在,就像最初使用 Solaris IKE 实用程序在令牌上创建了此对象一样。

如果指定了 –p,则会将 PKCS#11 令牌个人识别码存储在明确磁盘上,并具有受 root 保护的文件权限。如果未指定,用户必须在运行 in.iked(1M) 时使用 ikeadm(1M) 解除令牌的锁定。

参数

支持的参数如下:

certspec

指定与证书规范匹配的模式。有效 certspec 包括“主题名称”、“颁发机构名称”和“拥有者替代名称”。

上述各项可指定与给定 certspec 值匹配且不与其他 certspec 值匹配的证书。要指定不应存在于证书中的 certspec 值,请在该标记前加 !

有效 certspec 包括:

<Subject Names>
SUBJECT=<Subject Names>
ISSUER=<Issuer Names>
SLOT=<Slot Number in the certificate database>

Example:"ISSUER=C=US, O=SUN" IP=1.2.3.4 !DNS=example.com
Example:"C=US,   O=CALIFORNIA" IP=5.4.2.1 DNS=example.com 

替代名称的有效参数如下:

IP=<IPv4 address>
DNS=<Domain Name Server address>
EMAIL=<email (RFC 822) address>
URI=<Uniform Resource Indicator value>
DN=<LDAP Directory Name value>
RID=<Registered Identifier value>

可以指定不带关键字标记的有效插槽编号。也可以发布具有关键字标记的替代名称。

–A

证书的拥有者替代名称。–A 选项后的参数应采用标记=格式。有效标记包括 IPDNSEMAILURIDNRID(请参见下文的示例)。

–D

证书主题的 X.509 标识名。它通常具有以下格式:C=country,O=organization,OU=organizational unit,CN=common name。有效标记包括:COOUCN

–f

编码输出格式,包括 pem(表示 PEM Base64)或 ber(表示 ASN.1 BER)。如果未指定 –f,则采用 pem

–F validity end_time

证书有效期结束时间。如果未指定 –F 标志,有效期结束时间则为自有效期开始时间起的四年后。有关有效日期和时间语法的说明,请参见“附注”部分。

–m

密钥大小。此大小可以为 5121024204830724096。使用下面的命令可确定 Solaris 加密框架支持的密钥大小:

% cryptoadm list -vm

pkcs11_softtoken (5) 中介绍了上面的命令所显示的机制。如果您的系统具有硬件加速,该硬件支持的机制将在各提供器的单独部分中列出。机制可以是下列机制之一:

CKM_RSA_PKCS_KEY_PAIR_GEN
CKM_DSA_KEY_PAIR_GEN
CKM_DH_PKCS_KEY_PAIR_GEN

注 - 某些硬件仅支持某些密钥大小。例如,Sun Cryptographic Accelerator 4000 的 Keystore(当使用下面的 –T 选项时)最多仅对 RSA 支持 2048 位密钥,并对 DSA 支持 1024 位密钥。
–S validity start_time

证书有效期开始时间。如果未指定 –S 标志,则将当前日期和时间用作有效期开始时间。有关有效日期和时间语法的说明,请参见下文的“附注”部分。

–t

密钥类型。它可以为 rsa-sha1rsa-sha256 rsa-sha384rsa-sha512 rsa-md5dsa-sha1dsa-sha256

–T

硬件密钥存储的 PKCS#11 令牌标识符。此选项指定符合 PKCS#11 标准的硬件设备实例。PKCS#11 库必须在 /etc/inet/ike/config 中指定。(请参见 ike.config(4)。)

令牌标识符是包含 32 个字符的由空格补充的字符串。如果给定令牌的长度小 32 个字符,则会使用空格自动填充此令牌。

如果系统中存在多个 PKCS#11 库,请记住一次只能在 /etc/inet/ike/config 中指定一个 PKCS#11 库。一个 PKCS#11 库实例可能对应多个令牌(每个令牌具有单独的密钥存储)。

安全

此命令可将公钥-密钥对的私钥保存到文件中。如果恶意方通过某种方式获取了私钥,以任何途径泄露私钥都可能会导致攻击。

PKCS#11 硬件对象功能可克服磁盘上私钥的某些缺点。由于 IKE 是系统设备,因此不需要在引导时进行用户介入。但是,仍需要令牌的个人识别码。因此,PKCS#11 令牌的个人识别码存储在磁盘上的加密密钥通常所在的位置。通过使用硬件密钥存储,仍然无法拥有密钥,只有在主机面临安全风险时使用密钥才会导致问题,因此此设计决策可被接受。若不使用个人识别码,ikecert 安全性会降低为 PKCS#11 实现的安全性。因此,还应当仔细检查 PKCS#11 实现。

有关其他信息,请参见 Matt Blaze 在 Bruce Schneier 编著的《Applied Cryptography: Protocols, Algorithms, and Source Code in C.》中撰写的后记。

示例

示例 1 生成自签名证书

下面是自签名证书的示例:

example# ikecert certlocal -ks -m 512 -t rsa-md5 -D "C=US, O=SUN" -A

IP=1.2.3.4
Generating, please wait...
Certificate generated.
Certificate added to database.
-----BEGIN X509 CERTIFICATE-----
MIIBRDCB76ADAgECAgEBMA0GCSqGSIb3DQEBBAUAMBsxCzAJBgNVBAYTAlVTMQww
CgYDVQQKEwNTVU4wHhcNMDEwMzE0MDEzMDM1WhcNMDUwMzE0MDEzMDM1WjAbMQsw
CQYDVQQGEwJVUzEMMAoGA1UEChMDU1VOMFowDQYJKoZIhvcNAQEBBQADSQAwRgJB
APDhqpKgjgRoRUr6twTMTtSuNsReEnFoReVer!ztpXpQK6ybYlRH18JIqU/uCV/r
26R/cVXTy5qc5NbMwA40KzcCASOjIDAeMAsGA1UdDwQEAwIFoDAPBgNVHREECDAG
hwQBAgMEMA0GCSqGSIb3DQEBBAUAA0EApTRD23KzN95GMvPD71hwwClukslKLVg8
f1xm9ZsHLPJLRxHFwsqqjAad4j4wwwriiUmGAHLTGB0lJMl8xsgxag==
-----END X509 CERTIFICATE-----

示例 2 生成 CA 请求

生成 CA 请求的语法与生成自签名证书的基本相同。二者之间的唯一区别在于使用选项 –c 而非 –s,并且证书数据为 CA 请求。

example# ikecert certlocal -kc -m 512 -t rsa-md5 \
   -D "C=US, O=SUN" -A IP=1.2.3.4

示例 3 使用硬件密钥存储的 CA 请求

下面的示例展示如何使用 –T 选项指定令牌。

example# # ikecert certlocal -kc -m 1024 -t rsa-md5 -T vca0-keystore \
  -D "C=US, O=SUN" -A IP=1.2.3.4

退出状态

将返回以下退出值:

0

成功完成。

非零值

出现错误。在标准错误中写入相应错误消息。

文件

/etc/inet/secret/ike.privatekeys/*

私钥。私钥必须在 /etc/inet/ike/publickeys/ 中具有匹配的同名公钥证书。

/etc/inet/ike/publickeys/*

公钥证书。这些名称仅对匹配私钥名称至关重要。

/etc/inet/ike/crls/*

公钥证书撤销列表。

/etc/inet/ike/config

参考此文件以获取 PKCS#11 库的路径名。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os
接口稳定性
Committed(已确定)

另请参见

ikeadm(1M)in.iked(1M)getdate(3C)ike.config(4)attributes(5)pkcs11_softtoken (5)

由 Bruce Schneier 编著的《Applied Cryptography: Protocols, Algorithms, and Source Code in C》第 2 版。John Wiley & Sons 出版。纽约。1996 年。

由 RSA Labs 编著的 PKCS#11 v2.11:《Cryptographic Token Interface Standards 》,2001 年 11 月。

附注

下面提供了使用 –F–S 标志时的有效日期和时间语法:

对于相对日期,此语法如下所示:

{+,-}[Ns][Nm][Nh][Nd][Nw][NM][Ny]

其中:

N

表示整数

s

表示秒

m

表示分钟

h

表示小时

d

表示天

w

表示星期

M

表示月

y

表示年

这些参数可按任意顺序指定。例如,“+3d12h”表示从现在开始的三天半后的时间,“-3y2M”表示三年两个月以前。

所有具有固定值的参数都可以以绝对秒数的形式相加。具有可变秒数的月和年使用日历时间计算。长度不固定的月和年定义为,加一年或一个月表示下一年或下个月的同一天。例如,如果现在为 2005 年 1 月 26 日,并且证书应在从今天起的 3 年零 1 个月后过期,那么到期日期(有效期结束时间)将为 2008 年 2 月 26 日。系统会相应地处理溢出。例如,从 2005 年 1 月 31 日起一个月后的时间为 2005 年 3 月 3 日,这是因为 2 月仅包含 28 天。

对于绝对日期,接受文件 /etc/datemsk 中包含的日期格式的语法(有关详细信息,请参见 getdate(3C))。前面带有“+”或“-”的任何日期字符串均被视为相对于当前时间的时间,而其他字符串则视为绝对日期。此外,系统还会执行合理性检查,确保有效期结束日期大于有效期开始日期。例如,下面的命令将创建一个证书,使其开始日期为 1 天零 2 小时以前,结束日期为当地时间 2007 年 1 月 22 日 12:00:00。

# ikecert certlocal -ks -t rsa-sha1 -m 1024 \
    -D "CN=mycert, O=Sun, C=US" \ 
    -S -1d2h -F "01/22/2007 12:00:00"

由于 in.iked(1M) 只能在全局区域和独占 IP 区域中运行,因此该命令在共享 IP 区域中不起作用。