Go to main content

手册页第 7 部分:标准、环境、宏、字符集和杂项

退出打印视图

更新时间: 2018年8月8日 星期三
 
 

pkcs11_kmip (7)

名称

pkcs11_kmip - KMIP 服务器的 RSA PKCS#11 提供者

用法概要

/usr/lib/security/pkcs11_kmip.so
/usr/lib/security/64/pkcs11_kmip.so

描述

pkcs11_kmip.so 对象通过使用密钥管理互操作性协议 (Key Management Interoperability Protocol, KMIP) 与 KMIP 服务器进行通信来实现 RSA Security Inc. PKCS#11 加密令牌接口 (Cryptographic Token Interface, Cryptoki) v2.20 规范。此提供者支持以下 PKCS#11 机制:

CKM_AES_KEY_GEN
CKM_AES_CBC
CKM_AES_CBC_PAD

此提供者支持以下 PKCS#11 接口:

C_Initialize
C_Finalize
C_GetInfo
C_GetFunctionList
C_GetSlotList
C_GetSlotInfo
C_GetTokenInfo
C_GetMechanismList
C_GetMechanismInfo
C_InitToken
C_SetPIN
C_OpenSession
C_CloseSession
C_CloseAllSessions
C_GetSessionInfo
C_Login
C_Logout
C_CreateObject
C_CopyObject
C_DestroyObject
C_GetObjectSize
C_GetAttributeValue
C_SetAttributeValue
C_FindObjectsInit
C_FindObjects
C_FindObjectsFinal
C_EncryptInit
C_Encrypt
C_EncryptUpdate
C_EncryptFinal
C_DecryptInit
C_Decrypt
C_DecryptUpdate
C_DecryptFinal
C_GenerateKey

pkcs11_kmip 提供者支持多个插槽。每个插槽容纳一个 KMIP 服务器组。也就是说,一组 KMIP 服务器代表插入 PKCS#11 插槽的一个令牌。

KMIP PKCS#11 令牌配置包括两个部分:pkcs11_kmiplibkmip 特定部分。配置存储基于文件(对于用户专用配置)和基于 smf(共享系统范围的缺省值)。有关更多信息,请参见 smf(7) 手册页。

在初始化 pkcs11_kmip 提供者之前,用户需要先使用 kmipcfg 命令配置 KMIP 服务器组。有关更多信息,请参见 kmipcfg(8) 手册页。

专用 KMIP 客户机配置

kmipcfg 在各自的 KMIP 令牌目录中创建配置文件。此步骤提供用来与 KMIP 服务器建立连接的配置材料(包括 TLS 凭证)。可以为 PKCS#11 客户机配置一个或多个服务器组。有关更多信息,请参见 kmipcfg(8) 手册页。

KMIP 令牌目录的缺省位置为 /var/user/$USERNAME/kmip。如果设置,则环境变量 $KMIPTOKEN_DIR 会覆盖缺省位置。此 KMIP 令牌目录下的每个子目录表示一个服务器组,用于保存 KMIP 客户机与 KMIP 服务器连接时所需的配置材料。

共享 KMIP 客户机配置

KMIP 客户机组件的共享配置存储在服务管理框架中。有关更多信息,请参见 smf(7) 手册页。配置及其修改的访问规则由 SMF 的安全框架确定。有关更多信息,请参见 smf_security(7) 手册页。KMIP 客户机组件特定的授权和配置文件在 RBAC 框架中预配置,并用于各自的服务实例清单中以控制允许的操作。

共享 KMIP 客户机配置由“缺省 KMIP 令牌”服务组和标记表示。kmipcfg 用于更新配置参数。

服务实例和授权配置文件:为最顶层的 KMIP 客户机服务实例 svc:/system/pkcs11:kmip 定义了以下 rbac 配置文件。

  
       +----------------------------------------------------+-------------+
       | PROFILE NAME                                       | ACCESS TYPE |
       +----------------------------------------------------+-------------+
       | PKCS11 Default KMIP Token User                     | read-only   |
       +----------------------------------------------------+-------------+
       | PKCS11 Default KMIP Token Administrator            | read-write  |
       +----------------------------------------------------+-------------+
       | PKCS11 Default KMIP Token Service Instance Control | read-write  |
       |                                                    | + instance  |
       |                                                    | management  |
       +----------------------------------------------------+-------------+

配置

使用 kmipcfg 命令初始化用户的专用 KMIP 令牌。例如,要创建名为 KMIP_server 的服务器组,请键入以下命令:

# kmipcfg create -o server_list=kmip-server.example.com:5696\ 
            -o client_p12=kmip-server.p12 KMIP_server

使用 kmipcfg create 命令初始化并配置专用 KMIP 令牌后,可以使用 pktool inittoken 命令更改服务器组的名称:

# pktool inittoken slotid=3 currlabel=KMIP_server\ 
            newlabel=KMIP_newserver

对于初始化的专用 KMIP 令牌,可以使用 pktool setpin 命令更改与各服务器组的 PKCS#12 包关联的口令短语。

# pktool setpin keystore=pkcs11 token=KMIP_server

通过使用 pktool setpin 操作或通过调用 C_Login()C_SetPIN() 函数提供的 PIN 可以是长度介于 1 到 256 之间且不带嵌入空字符的任何字符串。

共享 KMIP 令牌从来都不是使用 kmipcfg create 命令创建的。安装 pkcs11_kmip 软件包期间会自动预配置该令牌,且仅由用户与“缺省 KMIP 令牌”特定的 rbac 授权之间是否存在关联来确定用户是否可以使用该令牌。

要设置“缺省 KMIP 令牌”参数,请使用 kmipcfg set 命令。

# kmipcfg set -o server_list="kmip-server.example.com:5696"\ 
             -o cred_source_type=raw -o cert=/tmp/cert.pem\ 
             -o private_key=/tmp/key.pem -o ca_cert=/tmp/ca_cert.pem\ 
             "Default KMIP token"

如果至少成功设置了 certprivate_key 参数或 p12_bundle,则各个令牌会标记上“受保护的授权路径”标志,并允许进行无 PIN 的访问。仍需要 C_Login() 函数调用,但 pPin 参数设置为 NULL_PTR。设置这些参数也会初始化“缺省 KMIP 令牌”,因此不需要进一步进行令牌初始化操作。

返回值

每个已实现函数的返回值都在 RSA PKCS#11 v2.20 规范中定义和列出。

在调用时,所有未实现的函数均返回 CKR_FUNCTION_NOT_SUPPORTED

文件

/var/user/$USERNAME/kmip

用户的缺省 KMIP 令牌目录

$KMIPTOKEN_DIR

KMIP 令牌目录的备用位置

属性

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

属性类型
属性值
接口稳定性
Committed(已确定)
MT 级别
MT-Safe with exceptions(多线程安全,但存在异常)。有关更多信息,请参见 RSA PKCS#11 v2.20 的第 6.6.2 节
标准
PKCS#11 v2.20

另请参见

pktool(1)libpkcs11(3LIB)attributes(7)cryptoadm(8)kmipcfg(8)