第 5 章 通过 PKCS#11 将应用程序配置为使用加密硬件

分离有关专用加密设备的 secret 信息部分,如用于最终用户身份验证的智能卡和加密令牌,以及用于服务器应用程序的硬件安全模块(HSM),提供额外的安全层。在 RHEL 中,通过 PKCS #11 API 对加密硬件的支持在不同的应用程序之间是一致的,并且加密硬件上的机密隔离不是一项复杂的任务。

5.1. 通过 PKCS #11 的加密硬件支持

公钥加密标准(PKCS)#11向保存加密信息并执行加密功能的加密设备定义了一个应用编程接口(API)。

PKCS #11 引入了 加密令牌,它是一个以统一方式向应用程序提供每个硬件或软件设备的对象。因此,应用程序会查看通常被人使用的智能卡,以及通常被计算机作为 PKCS #11 加密令牌使用的硬件安全模块等设备。

PKCS #11 令牌可以存储各种对象类型,包括证书、数据对象以及公有、私有或机密密钥。这些对象通过 PKCS #11 Uniform Resource Identifier (URI)模式来唯一标识。

PKCS #11 URI 是一种标准方法,其根据对象属性来识别 PKCS #11 模块中的特定对象。这可让您以 URI 格式,使用同样的配置字符串来配置所有的库和应用程序。

RHEL 默认为智能卡提供 OpenSC PKCS #11 驱动程序。但是,硬件令牌和 HSM 可以有自己的 PKCS #11 模块,这些模块在系统中没有对应项。您可以使用 p11-kit 工具注册这样的 PKCS #11 模块,它作为系统中注册的智能卡驱动程序的包装器。

要使您自己的 PKCS #11 模块在系统上正常工作,请在 /etc/pkcs11/modules/ 目录中添加一个新的文本文件

您可以通过在 /etc/pkcs11/modules/ 目录中创建一个新的文本文件,来将自己的 PKCS #11 模块添加到系统。例如,p11-kit 中的 OpenSC 配置文件如下所示:

$ cat /usr/share/p11-kit/modules/opensc.module
module: opensc-pkcs11.so