我正在尝试创建一个浏览器应用程序,该应用程序将访问需要 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/