我正在开发一个需要通过智能卡进行客户端身份验证的应用程序。
客户端使用智能卡执行相互SSL身份验证。
存在效率问题:客户端身份验证速度很慢。在任何互联网流量到网络服务之前,有大约6秒的延迟。
这是日志:
2013-05-20 16:54:38,986 DEBUG (HttpConnection.java:692) - Open connection to *****
keyStore is : NONE
keyStore type is : pkcs11
keyStore provider is : SunPKCS11-SmartCard
init keystore
==== HERE IS A DELAY OF ABOUT 6 SECONDS!!!!
init keymanager of type SunX509
客户端在Linux中运行。
我正在尝试各种解决方法和解决方案,以避免这种情况,但我认为这是由于智能卡的内部初始化,我无法避免。
你怎么看?我可以用一些礼仪来避免这种情况吗?谢谢!
答案 0 :(得分:1)
通常,您受智能卡和PKCS#11库(以及可能的底层)的限制。您可以尝试查看卡和读卡器是否配置为使用可用的最大速度。此外,您可以测试是否有任何方法可以缓存卡上的信息,或限制从智能卡检索的数据量。
通常,您正在等待读取卡目录数据(例如,ISO 7816-15兼容结构)。在解析数据(在现代CPU上应该花费很短的时间)之后,通常从卡下载证书。现在这部分可能是占用大部分时间的,所以如果有任何方法可以在CPU上缓存数据,或者只下载所需的证书,那么你可能会获得很多时间。
然而,它取决于使用的库是否以及如何执行此操作,实际上不可能通过PKCS#11提供程序进行配置(据我所知)。询问您的供应商!