android - 使用 PKCS#11 的相互客户端身份验证

标签 android ssl pkcs#11

我正在尝试创建一个浏览器应用程序,该应用程序将访问需要 TLS 相互客户端身份验证的服务器。应用程序需要能够通过 PKCS#11 接口(interface)提供客户端证书和 key 。

看过有关 Android 相互 tls 的各种文章后,我相信 PKCS#11 要求排除了使用 Android KeyChain/将证书添加到 Android 上的默认 keystore 的可能性(因为无法直接访问私钥)。

我有 PKCS#11 接口(interface),所以我可以使用私钥来签署数据。

有没有办法拦截 Android 使用 key 对数据进行签名的调用,以便我可以改用 PKCS#11 接口(interface)?目前看来,我唯一的选择确实是实现我自己的 TLS 堆栈来实现这一点。

最佳答案

这取决于 :) 您的目标平台是什么?在 Jelly Bean 上, keystore 中有一些对硬件设备的支持,因此您可以编写一个使用 PKCS#11 的 keymaster 模块。但是,那是一个操作系统组件,因此需要实现您自己的 ROM。您还可以开发自己的由 PKCS#11 模块支持的 JCE 提供程序。然后,在您的浏览器中,确保 SSL 引擎在执行客户端身份验证时使用您的提供商。

关于android - 使用 PKCS#11 的相互客户端身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11640706/

相关文章:

android - 如何在android中使用doInBackground来显示错误消息

android - 如何将数据从网站存储到 parse.com 以及如何在我的应用程序中获取它的数据

java - 如何使用 Spring Boot 2.3.1 将http流量重定向到https

Python SSL套接字无法连接到自签名证书

java - javafx 上的 sun.security.pkcs11

java - itext- 无法使用另一个 USB token 签署 pdf

android - Android Map v2 的发布 key 是什么?它是如何产生的?

java - 在 Eclipse(运行方式)构建中禁用 Androids 图像压缩

php - Stripe s2Member Pro 插件在实时模式下返回 card_declined

c++ - 通过 PKCS#11 获取 CryptoAPI 公钥