certcreate 命令
用途
certcreate 请求新证书以用于指定的用户。
语法
certcreate [-S 服务名称] [-s 开始日期] [-e 结束日期] { -f 文件 | [-b | -t] } [-p 专用密钥库] -我 标签 [- subject_alt_name] 主题区分名称 [用户名]
描述
certcreate 命令调用最终实体服务和库,并请求使用包含在命令行上的标识性信息创建新证书。 由 -S 选项指定要使用的服务。 在 /usr/lib/security/pki/ca.cfg 中定义可用的服务。 不具有 -S 选项的证书请求可使用本地服务来创建。 指定不具有 /usr/lib/security/pki/ca.cfg 文件中的条目的服务名是错误的。 ca.cfg 文件中的服务条目指定了发送请求的 CA。
如果未给出 -s 选项,那么使用当天日期。 如果未给出 -e 选项,那么使用来自 policy.cfg 文件的有效值。 如果该值不存在,那么自开始日期以后的一年应该被用作有效期。 startdate
和 enddate
的格式应与 chuser 命令使用的 expires
属性相同。 格式为 MMDDhhmmyy
格式的 10 个字符的字符串,其中 MM
表示月, DD
表示日, hh
表示小时, mm
表示分钟, yy
表示 1939 年到 2038 年的最后 2 个数字。 所有字符都是数字。
如果给出 -f 选项,那么新证书将是 DER 编码,并以二进制格式存储于指定文件中。 否则,它将是 DER 编码的并输出至 stdout,或者是二进制格式或者十六进制格式。 如果给出 -b 选项,那么输出将以二进制格式被显示到 stdout,否则它就是十六进制格式。 如果既未给出 -b 也未给出 -t,就使用二进制格式。
相应的专用密钥将存储在专用密钥存储器或设备中,如同底层命令或库所要求的那样。 如果给出了 -p 选项,那么专用密钥会存储于指定的专用密钥存储器中。 如果未提供 -p 选项,那么缺省值将为 /var/pki/ security/keys/<用户名>。
必须指定 -l 选项。 此标签是一个可变长度文本字符串,将被用作专用密钥存储器中专用密钥的别名。
subject_alt_name 的值将是因特网电子邮件地址(RFC2459 将此定义为 rfc822Name)。 这个值是可选的。 如果未提供值,那么证书不具有 rfc822Name 主题备用名称扩展名。 Subject_distinguished_name 仅限于 PKI 证书的值的有效集。 它由 RFC2459 定义为一个 X.501 类型名称。
certcreate 命令发出一个或多个提示并请求密码,为的是生成证书并将它存储于用户的专用密钥存储器中。 如果用户有现存的密钥存储器,会对该用户发出一次提示要求输入密码。 如果密钥存储器不存在,那么会先创建一个并要求用户再次重新输入密码加以确认。 如果命令无法打开 /dev/tty 用于当前进程,它将失败。
标志
项 | 描述 |
---|---|
-S 服务名称 | 指定用哪个服务模块。 |
-s 开始日期 | 指定证书生效的日期。 |
-e enddate | 指定证书失效的日期。 |
-f 文件 | 指定存储证书的文件。 |
-p privatekeystore | 指定专用密钥存储器的位置。 |
-l 标签 | 指定密钥存储器中专用密钥的标签。 |
-a subject_alt_name | 指定证书所有者的主题备用名称。 |
-b | 将证书数据的格式指定为二进制。 |
-t | 将证书数据的格式指定为十六进制。 |
退出状态
项 | 描述 |
---|---|
0 | 命令成功完成。 |
>0 | 发生错误。 |
安全性
这是一个 setuid 命令。
Root
和属于组安全性的调用者可为任何人创建证书。 非特权用户只能为自己创建证书,并且在指定专用密钥存储器位置时,使用以下规则:- 调用者可以指定缺省专用密钥库: /var/pki/security/keys/<用户名>
- 调用者可以指定自己对其具有写访问权的专用密钥存储器。
- 审计
该命令记录下列事件信息:
CERT_Create <用户名>
示例
$ certcreate -S local -s 0831112702 -e 1231235902 -f
cert.der -p file:/home/bob/bob.priv -l signcert
bob@ibm.com ou=finance,cn=Bob%20James bob
在前面的示例中,证书将从 2002 年 8 月 31 日上午 11:27 生效,直到 2002 年 12 月 31 日下午 11:59。 该证书放在文件 cert.der 中,而此专用密钥会存储于 bob.priv 中,其别名为 signcert
。$ certcreate -l signcert bob@ibm.com ou=finance,cn=Bob James > cert.der
文件
/usr/lib/security/pki/ca.cfg
/usr/lib/security/pki/policy.cfg