我正在尝试创建一个浏览器应用程序,该应用程序将访问需要TLS Mutual Client Authentication的服务器。应用程序需要能够通过PKCS#11接口提供客户端证书和密钥。
看过关于Android的相互关系的各种文章,我相信PKCS#11要求排除使用Android KeyChain /将证书添加到Android上的默认密钥库(因为无法直接访问私钥)。
我有PKCS#11接口工作,所以我可以使用私钥对数据进行签名。
有没有办法拦截Android使用密钥签名数据的调用,以便我可以使用PKCS#11界面?目前似乎我唯一的选择是实现我自己的TLS堆栈来实现这一目标。
答案 0 :(得分:2)
取决于:)您定位的平台是什么?在Jelly Bean上,对密钥库中的硬件设备有一些支持,因此您可以编写使用PKCS#11的keymaster模块。然而,这是一个OS组件,因此需要实现自己的ROM。您还可以开发由PKCS#11模块支持的自己的JCE提供程序。然后,在您的浏览器中,确保SSL引擎在进行客户端身份验证时使用您的提供程序。