Menu Close
Settings Close

Language and Page Formatting Options

5.3. 配置应用程序以使用智能卡的证书进行身份验证

在应用程序中使用智能卡进行身份验证可能会提高安全性并简化自动化。

  • 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(1) 手册页。

  • 指定用于 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(1) 手册页。

    注意

    由于 PIN 是一种安全措施,它控制对保存在智能卡中的密钥的访问,而配置文件中包含纯文本形式的 PIN,因此请考虑采取额外的保护来防止攻击者读取 PIN。例如,您可以使用 pin-source 属性并提供 file:从文件中读取 PIN 的 URI。请参阅 RFC 7512:PKCS #11 URI Scheme Query Attribute Semantics 了解更多信息。请注意,不支持将命令路径用作 pin-source 属性的值。

  • Firefox Web 浏览器会自动加载 p11-kit-proxy 模块。这意味着系统中的每个支持的智能卡都会被自动检测到。要使用 TLS 客户端身份验证,不需要额外的设置,当服务器请求智能卡的密钥时,会自动使用它们。

在自定义应用程序中使用 PKCS #11 URI

如果您的应用程序使用 GnuTLSNSS 库,则对 PKCS #11 URI 的支持是通过它们对 PKCS #11的内置支持来保证的。此外,依赖于 OpenSSL 库的应用程序还可以访问加密的硬件模块,这得益于 openssl-pkcs11 引擎。

对于需要在智能卡上使用私钥且不使用 NSSGnuTLSOpenSSL 的应用程序,请使用 p11-kit 来实现注册 PKCS #11 模块。

其他资源

  • p11-kit(8) 手册页。