我的应用程序通过PKCS#11通过ASP.NET web服务访问HSM,我初始化了密码库并获得了一个会话句柄。Web服务使用此句柄以批处理模式执行加密/解密/签名/验证。
我面临的问题是ASP.NET web服务在20分钟后超时。这个动作-我认为,卸载了加密库,并且web服务持有的会话句柄变得无效。是的,我同意可以将ASP.NET web服务重新配置为不超时,这将使cryptoki库始终处于加载状态。
我的问题是,我最初从HSM获得的会话句柄会发生什么情况?它是会丢失,还是会被闲置?我之所以这样问,是因为我没有通过调用c_closeSession来正确关闭打开的会话。
web服务是通过线程池实现的
谢谢
发布于 2010-07-13 04:30:10
您应该在使用完加密库后调用C_Finalize()。一个写得很好的实现对于你不这样做可能是健壮的,但是没有保证。您打开的会话可能会在HSM上保持活动状态,也可能在驱动程序中保持活动状态。
强烈考虑从您的Application_End()调用C_Finalize()。
发布于 2010-07-05 16:08:51
从理论的角度来看,您应该阅读PKCS#11 spec,它都是从6.6节开始写在那里的
从实用的角度来看,应用程序在调用C_Initialize之后就变成了加密应用程序。会话的概念和它的标识符可以由一个小的包装器库转发到一个长时间运行的PKCS#11进程,该进程实际上与HSM通信,但可能不会。如果加密应用程序的进程终止,那么所有虚拟资源也将终止(会话是什么)。
问题到底出在哪里?在大多数情况下,打开会话可能是一个非常廉价的操作,除非您确定(已经测量到)它是瓶颈,否则如果您不能控制加密进程的生命周期,就不要优化并打开和关闭请求的会话。
发布于 2018-08-09 20:42:01
如果我理解的话,您需要为该会话创建一个“全局”登录。此外,您需要为每个本地会话打开/关闭会话。
因此,-使用" login“的全局变量(启动时或需要时)-创建新会话时检查全局登录状态。-为每个操作创建单独的会话(关闭”本地“会话而不是全局登录)
这样,您就可以获得一个全局变量,其中包含一个记录的会话和使用该全局登录的单个会话。
祝好运
https://stackoverflow.com/questions/3175580
复制相似问题