Linux 上的 PKCS #11 openCryptoki API -入门
- UID
- 1066743
|
Linux 上的 PKCS #11 openCryptoki API -入门
openCryptoki 入门本节描述了 openCryptoki 的系统需求。它还说明了您可以到哪儿获取 openCryptoki 以及如何编译和安装它。
系统需求运行 openCryptoki 的系统必须至少支持一种 openCryptoki 所提供的令牌(4758 Cryptographic Coprocessor、ICA 2058 型和 System/390 Linux Cryptographic 硬件支持)。
以下列表显示了运行 openCryptoki 的系统需求。
硬件需求:- x86 PCI 总线系统,或
- 具有 Linux 密码硬件支持的 System/390
软件需求:- 至少运行 2.2.16 内核的 Linux 操作系统
- 安装令牌的设备驱动程序以及相关的支持库(还可能需要来自那些“分发版(distribution)”的一些头文件)
获取 openCryptokiopenCryptoki 项目位于 ,在这里可以得到源代码。从这个网站还可以得到提供错误修正和功能增强的更新。
编译与安装 openCryptoki假设系统硬件符合所需设备的设备支持(以及头文件),您可以通过在顶层目录运行 make 来构建 openCryptoki。使用 build 目标仅允许代码编译。install 目标试图在当前系统安装函数。设置 INSROOT 环境变量将允许您安装到不同位置。clean 目标清除目标文件以及来自源树的其它构建输出。
如果您只为一个特定设备构建 openCryptoki,那么源树的顶级 Makefile 应该被修改。每个组件有它自己的 Makefile,并且顶级 Makefile 遍历它所有的子目录构建它所找到的所有 Makefile。要构建特定组件,不必使用顶级 Makefile。在任意给定的子目录运行 make -f 命令就构建特定组件。用 make -f ../Makefile.linux 命令从那个目录构建具有 Linux 目录的组件。
配置 openCryptoki本节说明了与配置 openCryptoki 有关的各种组件和过程。
配置实用程序一共有三个配置实用程序,它们是 openCryptoki 工具箱的一个部分。它们是:
/usr/lib/pkcs11/methods/pkcs11_startup
这个实用程序是一个可执行的 shell 脚本,用来构建配置信息( /etc/pkcs11/pkcs11_config_data )。
/usr/lib/pkcs11/methods/4758_status 这个实用程序是一个二进制可执行文件,用来查询 4758 Coprocessor 以确定卡上是 shallow 还是 deep 固件装入。
/usr/lib/pkcs11/methods/pkcs_slot
这个实用程序是一个 shell 脚本,用来将配置文件写到磁盘的 /etc/pkcs11/config_data 。 要简化启动,建议您创建一个称之为 /etc/rc.pkcs11 的 shell 脚本。这个脚本的示例在 章节中。
配置文件与数据存储一些 STDLL 需要本地磁盘空间来存储持久数据,譬如令牌信息、个人识别号码(PIN)以及令牌对象。对于 shallow 4758 令牌,这个信息存储在 /etc/pkcs11/4758shallow ,对于 ICA 设备它存储在 /etc/pkcs11/lite 。每个目录中有一个子目录 TOK_OBJ ,它包含令牌对象。每个 STDLL 被限制到 2048 个公用的和 2048 个私有的令牌对象或者分配给 /etc 的磁盘空间。配置脚本自动创建所需目录并且分配所需权限。
注:FindObject 函数的性能与系统中存在的对象的数量直接相关。应该实现应用程序,以使它们不做这么多不必要的搜索。
/etc/pkcs11/pk_config_data 文件存储了系统中当前令牌的所有配置信息。当运行时,子系统的共享内存包含了实际有用的配置信息。
为配置准备系统为了确保对 openCryptoki 令牌的正确访问,只有 root 用户和是“pkcs11”组成员的用户被允许访问子系统。要正确配置系统,完成下列步骤:
- 运行
groupadd pkcs11命令来创建“pkcs11”组。
注: Red Hat Linux 系统支持该命令。参考您的 Linux 分发版文档以查找在您的实现不包含 groupadd 命令时如何添加组。 - 通过将用户标识加到
/etc/group 文件或者通过使用分发版的管理 GUI,把要使用子系统的任何用户标识添加到 pkcs11 组。或者,组所拥有的并且设置组标识符为 pkcs11 的应用程序也将能运行。配置检测脚本将创建数据存储位置并分配正确的所有权。 - 创建一个 shell 脚本以在系统引导时启动子系统。
- 将下列脚本添加到本地系统启动脚本。例如,在一个运行 Red Hat Linux 的系统上,把它添加为
/etc/rc.pkcs11 并在 /etc/rc.local 上添加一个对它的调用。 清单 11
2
3
4
5
6
7
8
9
10
| #!/bin/bash
# Sample /etc/rc.pkcs11
# script for starting pkcs#11 at system IPL.
# This should be added to the end of the rc.local script, or
# whatever local startup script for your distribution applies
# Generate the configuration information
/usr/lib/pkcs11/methods/pkcs11_startup
# start the subsystem
/usr/sbin/pkcsslotd
#end of startup script
|
子系统配置脚本询问系统,确定提供哪些设备并将它们自动放置到槽配置。假设设备依照其特定指令设置,子系统将反映在系统引导时检测到的配置。如果在 pkcs11_startup 脚本找不到设备,它们将不显示。通常设备不会被找到,因为在 /etc/rc.pkcs11 脚本被调用之前设备模块还没有装入。
PKCS #11 配置管理工具openCryptoki 提供一个命令行程序( /usr/lib/pkcs11/methods/pkcsconf )来配置和管理系统内部支持的令牌。这个程序提供与运行 pkcsconf -? 命令相同的功能。这个功能包括令牌初始化、安全性主管 PIN 初始化和更改以及用户 PIN 初始化和更改。需要特定令牌的操作必须具有由 -c 标志指定的槽。可以通过指定不带特定槽号的 -s 选项查看系统内部提供的令牌列表。例如, 显示了 pkcsconf 命令的选项并显示了令牌初始化前的系统槽信息:
清单 21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| [root@draeger /root]# /usr/lib/pkcs11/methods/pkcsconf -?
/usr/lib/pkcs11/methods/pkcsconf: invalid option -- ?
usage: /usr/lib/pkcs11/methods/pkcsconf [-itsmMIupP]
[-c slotnumber -U userPIN -S SOPin -n newpin]
-i display PKCS11 info
-t display token info
-s display slot info
-m display mechanism list
-M display shared memory
-I initialize token
-u initialize user PIN
-p set the user PIN
-P set the SO PIN
Output of the GetSlotInfo call
[root@draeger /root]# /usr/lib/pkcs11/methods/pkcsconf -s
Slot #0 Info
Description: Linux 2.4.2 Linux (ICA)
Manufacturer: Linux 2.4.2
Flags: 0x1
Hardware Version: 0.0
Firmware Version: 1.1
An un-initialized ICA token, the information is obtained via the
C_GetTokenInfo call
[root@draeger /root]# /usr/lib/pkcs11/methods/pkcsconf -i
PKCS#11 Info
Version 2.1
Manufacuter: IBM AIX Software PKCS11
Flags: 0x0
Library Description: Meta PKCS11 LIBRARY
Library VersionToken #0 Info:
Label: IBM ICA PKCS #11
Manufacturer: IBM Corp.
Model: IBM ICA
Serial Number: 123
Flags: 0x45
Sessions: -1/-1
R/W Sessions: -1/-1
PIN Length: 4-8
Public Memory: 0xFFFFFFFF/0xFFFFFFFF
Private Memory: 0xFFFFFFFF/0xFFFFFFFF
Hardware Version: 1.0
Firmware Version: 1.0
Time: 11:11:17 AM
|
这个程序还允许您为调试目的显示子系统共享内存段。另外,这个程序提供了对令牌的一些简单查询功能,譬如令牌信息和机制列表。
在应用程序使用 openCryptoki 子系统之前,必须执行下列初始化步骤(每个步骤都有示例代码):
1.初始化令牌:令牌在使用之前必须被初始化。这个过程的关键部分是指定一个唯一的标号。安全性主管 PIN 是必需的(所有 IBM
提供的令牌的缺省值是 87654321)。
注:当输入时,所有 PIN 在屏幕上都以星号显示。
|
|
|
|
|
|