Go to main content

手册页部分 1:用户命令

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

pktool(1)

名称

pktool - 管理证书和密钥

用法概要

pktool [–f option_file] [–i] subcommand subcommand_options ...

描述

使用 pktool 用户可以管理多个密钥库中的证书和密钥,包括 PKCS#11 令牌(即,加密框架)以及 OpenSSL 的基于标准文件的密钥库。

pktool 还支持列出、删除和导入证书撤销列表 (Certificate Revocation List, CRL)。pktool 不支持创建 CRL、签署 CRL 或导出 CRL。对 PKCS#11 密钥库的 CRL 支持是基于文件的。

选项

支持以下命令选项:

–f option_file

允许用户在文件中设置选项,而不是在命令行上输入选项。

提供此选项是为了方便用户,因为使用 pktool 时可能需要在命令行上指定大量子命令及相关选项。

option_file 的格式是每行一个选项或值对。

下面是 option_file 的一个示例:

list
keystore=file
dir=/export/foo
objtype=key
–i

允许用户以交互方式为 gencertgencsr 子命令指定 subject-DN。指定 –i 后,系统将提示用户输入一些数据以组成 subject-DN

使用 –i 选项的示例如下所示:

Country Name (2 letter code) [US]: US
State or Province Name (full name) [Some-State]: CA
Locality Name (eg, city) []: Menlo Park
Organization Name (eg, company): Example Corp.
Organizational Unit Name (eg, section): DevOps
Common Name (eg, YOUR name): John Smith
 Email Address []: john.smith@example.com

最后得到的 subject-DN 为:

"C=US, ST=CA, L=Menlo Park, O=Example Corp.,\
   OU=DevOps, emailAddress=john.smith@example.com, \
   CN=John Smith"
–?, ––help

The –? option displays usage and help information. ––help is a synonym for –?.

子命令

支持以下子命令:

delete

delete 子命令的格式如下:

pktool delete [token=token[:manuf[:serial]]]
              [objtype=private|public|both]
              [label=object-label]

pktool delete keystore=pkcs11
              objtype=cert[:public | private | both]]
              [token=token[:manuf[:serial]]]
              [label=cert-label]
              [serial=hex-serial-number]
              [issuer=issuer-DN]
              [subject=subject-DN]


pktool delete keystore=pkcs11
              objtype=key[:public | private | both]]
              [token=token[:manuf[:serial]]]
              [label=key-label]

pktool delete keystore=pkcs11
              objtype=crl
              infile=input-fn


pktool delete keystore=file
              objtype=cert
              [infile=input-fn]
              [dir=directory-path]
              [serial=hex-serial-number]
              [issuer=issuer-DN]
              [subject=subject-DN]

pktool delete keystore=file
              objtype=key
              [infile=input-fn]
              [dir=directory-path]

pktool delete keystore=file
              objtype=crl
              infile=input-fn

删除证书、密钥或证书撤销列表 (certificate revocation list, CRL)。

要从 PKCS#11 令牌中删除专用证书或私钥,系统将提示用户输入正确的个人识别号 (Personal Identification Number, PIN) 来向 PKCS#11 表明身份。

download

download 子命令的格式如下所示:

pktool download url=url_str
                 [objtype=crl|cert]
                 [http_proxy=proxy_str]
                 [outfile=output-fn]
                 [dir=directory-path]

从指定的 URL 位置下载 CRL 文件或证书文件。在成功下载文件后,将检查下载的 CRL 或证书文件的有效性。如果 CRL 或证书已过期,download 将发出警告。

export

export 子命令的格式如下:

pktool export [token=token[:manuf[:serial]]]
              [outfile=output-fn]

pktool export keystore=pkcs11
              [outfile=output-fn]
              [objtype=cert|key]
              [label=label]
              [subject=subject-DN]
              [issuer=issuer-DN]
              [serial=hex-serial-number]
              [outformat=pem|der|pkcs12|raw]
              [token=token[:manuf[:serial]]]

pktool export keystore=file
              certfile=cert-input-fn
              keyfile=key-input-fn
              [outfile=output-pkcs12-fn]

将 PKCS#11 令牌的内容或基于文件的密钥库的证书内容保存到指定文件。

gencert

gencert 子命令的格式如下所示:

pktool gencert [-i] [ keystore=pkcs11]
              label=key/cert-label
              subject=subject-DN
              serial=hex_serial_number
              [altname=[critical:]subjectAltName,subjectAltName...]
              [keyusage=[critical:]usage,usage...]
              [token=token[:manuf[:serial]]]
              [ keytype=rsa | ec [curve=ECC Curve Name] \
                  [hash=md5 | sha1 | sha224 | sha256 | sha384 | sha512]]
              [ keytype=dsa [hash=sha1 | sha224 | sha256 ]]
              [keylen=key-size]
              [eku=[critical:]EKU_name,...]
              [listcurves]
              [lifetime=number-hour|number-day|number-year]

pktool gencert [-i] keystore=file
              outcert=cert-fn
              outkey=key-fn
              subject=subject-DN
              serial=hex_serial_number
              [altname=[critical:]subjectAltName,subjectAltName...]
              [keyusage=[critical:]usage,usage...]
              [format=der|pem]
              [ keytype=rsa
                [hash=md5|sha1|sha224|sha256|sha384|sha512]]
              [ keytype=dsa [hash=sha1 | sha224 | sha256 ]]
              [keylen=key-size]
              [eku=[critical:]EKU_name,...]
                [lifetime=number-hour|number-day|number-year]

生成一个自签名证书并将该证书及相关私钥安装到指定的密钥库。

除非将某个散列算法指定为 pktool gencert 的选项,否则使用的缺省散列算法为 SHA-256。

对于基于令牌的密钥库,gencert 会提示用户输入 PIN。

gencsr

gencsr 子命令的格式如下所示:

pktool gencsr [-i] keystore=pkcs11
              label=key-label
              outcsr=csr-fn
              subject=subject-DN
              [altname=[critical:]subjectAltName,subjectAltName...]
              [keyusage=[critical:]usage,usage...]
              [token=token[:manuf[:serial]]]
              [ keytype=rsa | ec [curve=ECC Curve Name] \
               [hash=md5 | sha1 | sha224 | sha256 | sha384 | sha512]]
              [ keytype=dsa [hash=sha1 | sha224 | sha256 ]]
              [keylen=key-size]
              [format=pem|der]
              [eku=[critical:]EKU_name,...]
              [rfc2986attr=y|n]
              [listcurves]

pktool gencsr [-i] keystore=file
              outcsr=csr-fn
              outkey=key-fn
              subject=subject-DN
              [altname=[critical:]subjectAltName,subjectAltName...]
              [keyusage=[critical:]usage,usage...]
              [dir=directory-path]
              [ keytype=rsa
                [hash=md5|sha1|sha224|sha256|sha384|sha512]]
              [ keytype=dsa [hash=sha1 | sha224 | sha256 ]]
              [keylen=key-size]
              [format=pem|der]
              [rfc2986attr=y|n]
              [eku=[critical:]EKU_name,...]

创建 PKCS#10 证书签名请求 (certificate signing request, CSR) 文件。可以将该 CSR 发送给颁证机构 (Certifying Authority, CA) 进行签名。对于基于令牌的密钥库,gencsr 子命令会提示用户输入 PIN。

除非将某个散列算法指定为 pktool gencsr 的选项,否则使用的缺省散列算法为 SHA-256。

genkey

genkey 子命令的格式如下所示:

pktool genkey [keystore=pkcs11]
              label=key-label
              [keytype=aes|arcfour|des|3des|generic]
              [keylen=key-size (for aes, arcfour, or \
                  generic keytypes only)]
              [token=token[:manuf[:serial]]]
              [sensitive=y|n]
              [extractable=y|n]
              [print=y|n]


pktool genkey keystore=file
              outkey=key-fn
              [keytype=aes|arcfour|des|3des|generic]
              [keylen=key-size (for aes, arcfour, \
                   or generic keytypes only)]
              [print=y|n]

在指定密钥库中生成对称密钥。对于基于令牌的密钥库,genkey 子命令会提示用户输入 PIN。

genkeypair

genkeypair 子命令的格式如下所示:

pktool genkeypair [keystore=pkcs11]
                  label=key-label
                  [token=token[:manuf[:serial]]]
                  [keytype=rsa|dsa|ec [curve=ECC Curve Name]]
                  [keylen=key-size]
                  [listcurves]

pktool genkeypair keystore=file
                  outkey=key_filename
                  [format=der|pem]
                  [keytype=rsa|dsa]
                  [keylen=key-size]

在指定的密钥库中生成密钥对。

import

import 子命令的格式如下:

pktool import [token=token[:manuf[:serial]]]
              infile=input-fn

pktool import [keystore=pkcs11]
              infile=input-fn
              label=object-label
              [keytype=aes|arcfour|des|3des|generic]
              [sensitive=y|n]
              [extractable=y|n]
              [token=token[:manuf[:serial]]]
              [objtype=cert|key]

pktool import keystore=pkcs11
              objtype=crl
              infile=input-fn
              outcrl=output-crl-fn
              outformat=pem|der

pktool import keystore=file
              infile=input-fn
              outkey=output-key-fn
              outcert=output-key-fn
              [outformat=pem|der]

pktool import keystore=file
              objtype=crl
              infile=input-fn
              outcrl=output-crl-fn
              outformat=pem|der

将证书、密钥或 CRL 从指定输入文件装入指定密钥库。

inittoken

inittoken 子命令的格式如下所示:

pktool inittoken [ slotid=slot number ]
                 [ currlabel=token[:manuf[:serial]]]
                 [ newlabel=new token label ]

该命令使用 C_InitToken API 初始化 PKCS#11 令牌。定位令牌的首选方法是指定其缺省标签。还可以通过使用 newlabel 参数向令牌分配新标签。如果没有提供 newlabel,则不会修改令牌标签。系统将提示用户输入安全员 (security officer, SO) PIN,然后此命令才能继续执行。查看 pktool 令牌的输出以获取槽号。

list

list 子命令的格式如下:

pktool list [token=token[:manuf[:serial]]]
            [objtype=private|public|both]
            [label=label]

pktool list [keystore=pkcs11]
            [objtype=cert[:public | private | both]]
            [token=token[:manuf[:serial]]]
            [label=cert-label]
            [serial=hex-serial-number]
            [issuer=issuer-DN]
            [subject=subject-DN]

pktool list [keystore=pkcs11]
            objtype=key[:public | private | both]]
            [token=token[:manuf[:serial]]]
            [label=key-label]
            [keyvalue=y|n]

pktool list keystore=pkcs11
            objtype=crl
            infile=input-fn


pktool list keystore=file
            objtype=cert
            [infile=input-fn]
            [dir=directory-path]
            [serial=hex-serial-number]
            [issuer=issuer-DN]
            [subject=subject-DN]

pktool list keystore=file
            objtype=key
            [infile=input-fn]
            [dir=directory-path]
            [keyvalue=y|n]

列出证书、密钥或证书撤销列表 (certificate revocation list, CRL)。在显示 PKCS#11 令牌中的专用证书或私钥时,系统将提示用户输入正确的 PIN 以便向 PKCS#11 令牌表明身份。

setpin

setpin 子命令的格式如下所示:

pktool setpin [ keystore=pkcs11]
       [token=token[:manuf[:serial]]]
       [usertype=user | so]

更改用于向 PKCS#11 令牌验证用户身份的口令短语。口令短语可以是长度为 1 到 256 之间且不含空值的字符串。

setpin 提示用户输入旧口令短语(如果有)。如果旧口令短语匹配,pktool 将提示用户输入新口令短语两次。如果两次输入的新口令短语匹配,它将成为该令牌的当前口令短语。

对于 Sun Software PKCS#11 softtoken 密钥库(缺省),用户在使用 setpin 命令来更改对象存储的口令短语时,必须使用缺省口令短语 changeme 作为旧口令短语。在初始化新创建的令牌对象存储并为其设置口令短语时,需要执行此操作。

如果为基于 PKCS#11 的令牌指定了 usertype=so 选项,则会更改与普通用户 PIN 相对的安全员 (Security Officer, SO) 用户 PIN。缺省情况下,usertype 假定为 user

signcsr

signcsr 子命令的格式如下所示:

signcsr keystore=pkcs11
        signkey=label (label of key to use for signing)
        csr=CSR_filename
        serial=serial_number_hex_string_for_final_certificate
        outcert=filename_for_final_certificate
        issuer=issuer-DN
        [store=y|n] (store the new cert in on the token, default=n)
        [outlabel=certificate label]
        [format=pem|der] (certificate output format)
        [subject=subject-DN] (override the CSR subject name)
        [altname=subjectAltName,subjectAltName...] (add subjectAltName)
        [keyusage=[critical:]usage,...] (add key usage bits)
        [eku=[critical:]EKU_Name,...] (add Extended Key Usage)
        [lifetime=number-hour|number-day|number-year]
        [token=token[:manuf[:serial]]]
signcsr keystore=file
        signkey=filename
        csr=CSR_filename
        serial=serial_number_hex_string_for_final_certificate
        outcert=filename_for_final_certificate
        issuer=issuer-DN
        [dir=directory-path]
        [format=pem|der] (certificate output format)
        [subject=subject-DN] (override the CSR subject name)
        [altname=subjectAltName,subjectAltName...] (add a subjectAltName)
        [keyusage=[critical:]usage,...] (add key usage bits)
        [lifetime=number-hour|number-day|number-year]
        [eku=[critical:]EKU_Name,...] (add Extended Key Usage)
tokens

tokens 子命令的格式如下所示:

pktool tokens

tokens 子命令列出所有可见的 PKCS#11 令牌。即使启用了元插槽,也会列出缺省令牌 (keystore)。此外,当启用了元插槽或者当存在的令牌数超过两个时,元插槽还将作为虚拟令牌显示在列表中。

用法

pktool 的子命令支持以下选项:

altname=[critical:]subjectAltName,subjectAltName...

证书的拥有者替代名称。altname 选项后的参数应使用 tag=value 格式。有效的标记为 IP、DNS、EMAIL、URI、KRB、UPN 和 RID。如果 altname 字符串带有前缀 critical,则 SubjectAltName 扩展被标记为 critical

critical 标志为所有 altname 共享,应放在第一个拥有者替代名称的开头。

altname 标记(例如 IP、EMAIL、DN 等)之间的分隔符是逗号 (,)。DN 类型的组成部分之间的分隔符是分号 (;)。

Example 1: Add an IP address to the subjectAltName extension. altname="IP=1.2.3.4" Example 2: Add an email address to the subjectAltName extension, and mark it as being critical. altname="critical:EMAIL=first.last@example.com"

示例 3:向 subjectAltName 扩展添加多个拥有者替代名称 IP 地址、电子邮件地址和标识名,并将其标记为 critical。

altname="critical:IP=1.2.3.4,EMAIL=first.last@example.com,\
DN=C=US;O=Oracle;OU=Security;CN=John Smith"
currlabel=token label

此选项仅供 inittoken 命令使用。这用于定位正在被初始化的缺省令牌。有关要使用的令牌名称的格式的详细信息,请参见 token 选项。

curve=Elliptic_Curve_Name

此选项用于指定在生成 X.509 证书或证书签名请求时或生成椭圆曲线密钥对时要使用的椭圆曲线参数。

支持以下指定曲线:

secp112r1, secp112r2, secp128r1, secp128r2, secp160k1
secp160r1, secp160r2, secp192k1, secp192r1, secp224k1
secp224r1, secp256k1, secp256r1, secp384r1, secp521r1
sect113r1, sect113r2, sect131r1, sect131r2, sect163k1
sect163r1, sect163r2, sect193r1, sect193r2, sect233k1
sect233r1, sect239k1, sect283k1, sect283r1, sect409k1
sect409r1, sect571k1, sect571r1, c2pnb163v1, c2pnb163v2
c2pnb163v3, c2pnb176v1, c2tnb191v1, c2tnb191v2, c2tnb191v3
c2pnb208w1, c2tnb239v1, c2tnb239v2, c2tnb239v3, c2pnb272w1
c2pnb304w1, c2tnb359v1, c2pnb368w1, c2tnb431r1, prime192v2
prime192v3

通过将 listcurves 选项与 gencertgencsrgenkeypair 子命令一起使用,还可以查看指定曲线的列表。

dir=directory_path

指定存储所请求的对象的 OpenSSL 密钥库目录。signcsr 子命令应用到基于文件的密钥库时,此选项指定证书的签发者所在目录,缺省为当前目录。

eku=[critical:]EKU_Name,[critical:]EKU_Name, ...]

指定要添加到证书或证书请求的扩展密钥用法 X.509v3 扩展值。

EKU_Name 指定为以下任一值:serverAuthclientAuthcodeSigningemailProtectionipsecEndSystemipsecTunnelipsecUsertimeStampingOCSPSigningKPClientAuthKPKdcscLogon

An example is:

eku=KPClientAuth,clientAuth
extractable=y | n

指定 PKCS#11 令牌中的结果对称密钥是否为可提取的。有效值是 yn。缺省值是 y

format=pem | der | pkcs12

对于 gencert 子命令,此选项仅适用于基于文件的密钥库,如 OpenSSL。它用于指定要创建的密钥或证书文件的输出格式。有效格式是 pemder。缺省格式为 pem

对于 gencsr 子命令,此选项指定 CSR 文件的输出编码格式。有效格式是 pemder。缺省格式为 pem

hash=md5 | sha1 | sha224 | sha256 | sha384 | sha512

对于 gencertgencsr 子命令,此选项允许调用者指定用于生成 X.509 证书签名的散列算法。在使用 PKCS#11 密钥库创建基于 EC 或 RSA 的证书时可使用它。使用基于 OpenSSL 文件的密钥库时,椭圆曲线支持不可用。

infile=input-fn

当 objtype=cert 且 keystore=file 时,为 listdelete 子命令指定证书文件名称。对于 import 子命令,此选项指定要导入的文件名。Specifies the input CRL filename for list, delete and import subcommands when objtype=crl.

issuer=issuer-DN

指定证书的颁发者。

keylen=key-size

指定要生成的私钥或对称密钥的大小(位数)。

对于 gencertgencsr 子命令,缺省密钥长度是 2048 位。

对于 genkey 子命令,使用 AES 算法生成的对称密钥的最小位数和最大位数分别是 128256。使用 ARCFOUR 算法时,最小位数和最大位数分别是 82048。普通密钥的最小位数是 8 位,最大位数任意。AES、ARCFOUR 或普通密钥的缺省密钥长度是 128。对于 DES 密钥或 3DES 密钥,密钥长度是固定的;如果指定了此选项,将忽略此选项。

keystore=pkcs11 | file

指定基础密钥库的类型:PKCS#11 令牌或基于文件的插件。

keytype=rsa | dsa | ec | aes | arcfour | des | 3des | generic

指定要生成的私钥或对称密钥的类型。

对于 gencertgencsr 子命令,有效私钥类型是 rsaecdsa。缺省密钥类型是 rsa

对于 genkey 子命令,有效的对称密钥类型是 aesarcfourdes3desgeneric。缺省密钥类型是 aes

keyusage=[critical:]usage,usage,usage,...
Key Usage strings:
* digitalSignature
* nonRepudiation
* keyEncipherment
* dataEncipherment
* keyAgreement
* keyCertSign
* cRLSign
* encipherOnly
* decipherOnly

示例 1:设置 KeyUsage,以便 cert(或 csr) 可以用于对非证书或 CRL (digitalSignature) 数据进行签名和验证,还可以用于对非加密密钥 (dataEncipherment) 数据进行加密和解密。keyusage=digitalSignature,dataEncipherment

示例 2:与上面的示例 1 相同,但设置了 critical 位。keyusage=critical:digitalSignature,dataEncipherment

keyvalue=y | n

此选项显示基于文件的密钥库和 PKCS#11 密钥库中对称密钥的十六进制格式密钥值。有效值是 yn。缺省值为 n

label=key-label | cert-label

对于 gencert 子命令,此选项指定 PKCS#11 令牌中的私钥和自签名证书的标签。

对于 gencsr 子命令,此选项指定 PKCS#11 令牌中的私钥的标签。

对于 list 子命令,此选项指定 PKCS#11 令牌中的 X.509 证书的标签(objtype=cert 时)或私钥的标签(objtype=key 时)以进一步限制列表。

对于 delete 子命令,此选项指定 X.509 证书的标签(objtype=cert 时)或私钥的标签(objtype=key 时)以从 PKCS#11 令牌中删除指定对象。

listcurves

此选项用于显示受支持的椭圆曲线名称的列表。仅 gencertgencsrgenkeypair 子命令可以使用此选项。

lifetime=number-hour|number-day|number-year

指定证书的有效期。可以通过 number-hournumber-daynumber-year 指定证书使用期限。只能指定一种格式。缺省值是 1-year。此选项的示例如下:lifetime=1-hour、lifetime=2-day、lifetime=3-year

newlabel=token label

此选项仅供 inittoken 命令使用。这用于更改分配给正在被初始化的令牌的标签。有关要使用的令牌名称的格式的详细信息,请参见 token 选项。

nickname=cert-nickname

对于 PKCS#11 令牌,可将其用作 gencert 命令的 "label" 选项的替代选项。

objtype=cert | key | crl

Specifies the class of the object: cert, key, or crl.对于 download 子命令,如果未指定此选项,则缺省类是 crl

objtype=public | private | both

指定对象的类型:专用对象、公用对象或两者。当指定了 objtype=key 时,此选项仅适用于针对 PKCS#11 令牌的 listdelete 子命令。缺省值是 public

对于 list 子命令,可以将 label 选项与此选项组合使用以进一步限制密钥列表。对于 delete 子命令,可使用此选项将要删除的密钥缩小到仅公钥或仅私钥。或者,可以忽略标签选项,以指示要删除所有公钥和/或私钥。在 objtype 参数中选择使用 publicprivateboth 仅适用于 PKCS#11 密钥库,以便维护与早期版本的 pktool 命令的兼容性。

outcert=cert-fn

指定要写入到的输出证书文件名。对于基于文件的插件(如 OpenSSL),此选项是必需的。此选项必须与 outkey=key-fn 选项一起使用。

outcrl=output-crl-fn

指定要写入到的输出 CRL 文件名。

outcsr=csr-fn

指定要写入到的输出 CSR 文件名。

outfile=output-fn

对于 export 子命令,此选项指定要创建的输出文件名。对于 import 子命令,此选项指定证书或 CRL 的输出文件名。此选项仅适用于基于文件的插件,如 OpenSSL。对于 download 子命令,如果未指定此选项,则下载的文件名是 URL 字符串的基名。

outformat=pem | der | pkcs12

对于 import 子命令,此选项指定从指定的 PKCS#12 文件提取到基于文件的插件中的证书或密钥的输出格式。有效值是 pemder。The default is pem.将 CRL 导入基于 CRL 文件的密钥库时,此选项指定 CRL 的输出格式。有效值是 pemder。缺省值是 der。对于 export 子命令,此选项指定要创建的指定输出文件的格式。支持的格式为 pemderpkcs12。缺省值是 pkcs12

outkey=key-fn

指定要写入到的输出私钥文件名。只有使用 files 密钥库时需要此选项。

print=y | n

此选项用于 genkey 子命令中,且适用于 PKCS11 密钥库和基于文件的密钥库。如果 print=ygenkey 子命令将在十六进制的单个行中输出生成的密钥的密钥值。缺省值为 n。对于 PKCS11 密钥库,如果创建对称密钥时使用了 sensitive=yextractable=n 设置,则不会显示密钥值,即使 print 选项设置为 y 也是如此。仍然会创建密钥,但发出如下警告:cannot reveal the key value

rfc2986attr=y | n

指定是否要将 'attributes' 编码为空的 ASN.1 构造 'SET OF'。有效值是 yn。缺省值是 y,表示 pktool 遵循 PKCS#10 标准 (RFC 2986)。一些旧的已关闭的证书颁发机构可能会要求指定 n

sensitive=y | n

指定 PKCS#11 令牌中的结果对称密钥是否为敏感的。有效值是 yn。缺省值为 n

serial=hex-serial-number

指定证书的唯一序列号。序列号必须指定为十六进制值。示例:0x0102030405060708090a0b0c0d0e0f

slotid=slot number

指定与令牌接合的插槽的 ID。slotid 可以变化。如果使用 cryptoadm 命令修改、添加或删除了令牌提供者,可能会发生这种情况。有关更多信息,请参见 cryptoadm(8) 手册页。

因此,最好使用 label= 而非 slotid= 来标识令牌提供者。令牌标签显示在 pktool tokens 输出的 "Token Name" 列下。

subject=subject-DN

为证书或证书请求指定具体的证书所有者。subject= 设置示例如下:

subject=O=Sun Microsystems Inc., \
OU=Solaris Security Technologies Group, \
L=Ashburn, ST=VA, C=US, CN=John Smith
token=token[:manuf[:serial]]

当令牌标签包含结尾空格时,为方便起见,此选项不要求用户键入这些空格。

冒号分隔的令牌标识字符串 token:manuf:serial。如果任何部分中有 : 文本字符,则需要使用反斜杠 (\) 进行转义。如果没有发现 :,则整个字符串(最多 32 个字符)将用作令牌标签。如果只发现一个 :,则字符串将用作令牌标签和生产商。当指定了 keystore=pkcs11 时,如果未指定此选项,则缺省值为 pkcs11_softtoken

usertype=user | so

指定为其执行 setpin 命令的用户的类型。缺省情况下,是为标准用户执行,但可以指定 so 来为令牌安全员设置 PIN。

url=url_string

指定用来下载 CRL 或证书文件的 URL。

http_proxy=proxy_str

指定代理服务器主机名和端口号。格式可以是 http://hostname[:port]hostname[:port]。如果没有指定此选项,则 download 子命令将检查 http_proxy 环境变量。命令行选项的优先级高于环境变量。

示例

示例 1 生成自签名证书

以下示例将创建证书并将其存储在命令中指示的密钥库中:

$ pktool gencert keystore=pkcs11 label=WebServerCert \
       subject="O=Example Company Inc., OU=Security Technologies Group, \
       L=Ashburn, ST=VA, C=US, CN=John Smith" serial=0x01 \
       keytype=rsa keylen=2048 hash=sha512
示例 2 生成证书签名请求

以下示例将创建 CSR 并将其存储在命令中指示的密钥库中:

$ pktool gencsr keystore=pkcs11 subject="O=Example Company Inc., \
     OU=HR Department, L=Ashburn, ST=VA, C=US, CN=John Smith" \
     keytype=rsa keylen=2048 hash=sha256 outcsr=csr.dat \
     label=TestCert
示例 3 导入证书

以下示例将一个证书对象从指定输入文件导入到命令中指示的密钥库中:

$ pktool import keystore=pkcs11 objtype=cert infile=mycert.pem \
      label=mycert

退出状态

将返回以下退出值:

0

成功完成。

> 0

出现错误。

属性

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

属性类型
属性值
可用性
system/core-os
接口稳定性
请参见下文

带有 keystore=[file|pkcs11] objtype=key keyvalue=y|nlist 子命令的命令调用和可解析输出为 "Committed"(已确定)。所有其他输出为 "Not-an-Interface"(不是接口)。

另请参见

attributes(7), pkcs11_softtoken(7)

OASIS PKCS#11 v2.40 specification

https://www.oasis-open.org/committees/pkcs11/

RSA PKCS#12 v1.0

https://tools.ietf.org/html/rfc7292

SECG Recommended Elliptic Curve Domain Parameters

https://www.secg.org/