Мой доступ к приложению HSM через веб-сервис ASP.NET через PKCS#11. Я инициализирую cryptoki библиотеку и получаю дескриптор сессии. Веб-сервис держится за этот дескриптор для выполнения шифрования/дешифрования/подписания/проверки в пакетном режиме.
Проблемой, с которой я сталкиваюсь, являются тайм-ауты веб-сервиса ASP.NET после 20 минут. Это действие - я думаю, разгружает cryptoki библиотеку, и дескриптор сессии, сохраненный веб-сервисом, становится недопустимым. Да, я соглашаюсь, что веб-сервис ASP.NET может быть реконфигурирован не к тайм-ауту, который будет всегда сохранять cryptoki библиотеку загружаемой.
Мой вопрос - то, Что происходит с дескриптором сессии, который я получил во-первых из HSM?. Это будет потеряно, или это будет там не использовано? Я спрашиваю это, потому что, я не закрыл открытый сеанс правильно путем вызова c_closeSession
.
Веб-сервис реализован через Пул потоков
Спасибо
Вы должны вызвать C_Finalize()
, когда закончите использовать библиотеку cryptoki. Хорошо написанная реализация может быть устойчива к тому, что вы этого не сделаете, но гарантий нет. Ваши открытые сессии могут быть сохранены на HSM и, возможно, в драйвере.
Настоятельно рассмотрите возможность вызова C_Finalize()
из Application_End()
.
С теоретической точки зрения вы должны прочитать PKCS # 11 spec , это все написано там, начиная с раздела 6.6
С практической точки зрения приложение становится криптографическим приложением после того, как оно вызывает C_Initialize. Концепция сеанса и его идентификатор могут быть переданы небольшой библиотекой-оболочкой длительному процессу PKCS # 11, который фактически взаимодействует с HSM, но не может. Если процесс, который был приложением криптоки, умирает, то погибнут и все виртуальные ресурсы (что такое сеанс).
Где именно проблема ? Открытие сеанса может быть довольно дешевой операцией в большинстве случаев, если вы не уверены (не измерили), что это узкое место, не оптимизируйте и не открывайте и не закрывайте сеанс для запроса, если вы не можете контролировать продолжительность жизни процесса криптоки.