3.3. 配置应用程序以使用智能卡上的证书进行身份验证
在应用程序中使用智能卡进行身份验证可能会提高安全性,并简化自动化。您可以使用以下方法将公钥加密标准(PKCS) #11 URIs 集成到应用程序中:
-
Firefox
web 浏览器会自动加载p11-kit-proxy
PKCS #11 模块。这意味着系统中的每个支持的智能卡都会被自动检测到。对于使用 TLS 客户端身份验证,不需要额外的设置,在服务器请求它们时会自动使用智能卡中的密钥和证书。 -
如果您的应用程序使用
GnuTLS
或NSS
库,则它已经支持 PKCS #11 URI。另外,依赖OpenSSL
库的应用程序可以通过pkcs11-provider
软件包安装的 PKCS modprobe 供应商访问加密硬件模块,包括智能卡。 -
需要使用智能卡上的私钥且不使用
NSS
、GnuTLS
或OpenSSL
的应用程序可以直接使用p11-kit
API 来使用加密硬件模块,包括智能卡,而不是使用特定 PKCS #11 模块的 PKCS #11 API。 使用
wget
网络下载程序,您可以指定 PKCS #11 URI ,而不是本地存储的私钥和证书的路径。这可能会简化为需要安全存储私钥和证书的任务创建脚本。例如:wget --private-key 'pkcs11:token=softhsm;id=%01;type=private?pin-value=111111' --certificate 'pkcs11:token=softhsm;id=%01;type=cert' https://example.com/
$ wget --private-key 'pkcs11:token=softhsm;id=%01;type=private?pin-value=111111' --certificate 'pkcs11:token=softhsm;id=%01;type=cert' https://example.com/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用
curl
工具时,您也可以指定 PKCS #11 URI:curl --key 'pkcs11:token=softhsm;id=%01;type=private?pin-value=111111' --cert 'pkcs11:token=softhsm;id=%01;type=cert' https://example.com/
$ curl --key 'pkcs11:token=softhsm;id=%01;type=private?pin-value=111111' --cert 'pkcs11:token=softhsm;id=%01;type=cert' https://example.com/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意由于 PIN 是一种安全措施,它控制对保存在智能卡中的密钥的访问,而配置文件中包含纯文本形式的 PIN,因此请考虑采取额外的保护来防止攻击者读取 PIN。例如,您可以使用
pin-source
属性,并提供file:
URI 来从文件中读取 PIN。如需更多信息,请参阅 RFC 7512: PKCS #11 URI 模式查询属性语义。请注意,不支持将命令路径用作pin-source
属性的值。