HSM - криптоки - сессии - тайм-аут - PullRequest
1 голос
/ 04 июля 2010

Мое приложение обращается к HSM через веб-сервис ASP.NET через PKCS # 11.Я инициализирую библиотеку криптоки и получаю дескриптор сеанса.Веб-служба удерживает этот дескриптор для выполнения шифрования / дешифрования / подписывания / проверки в пакетном режиме.

Проблема, с которой я сталкиваюсь, заключается в превышении времени ожидания веб-службы ASP.NET через 20 минут.Это действие, я думаю, выгружает библиотеку cryptoki, и дескриптор сеанса, поддерживаемый веб-сервисом, становится недействительным.Да, я согласен с тем, что веб-сервис ASP.NET может быть перенастроен без тайм-аута, что будет поддерживать библиотеку cryptoki всегда загруженной.Первое место у HSM ?.Будет ли он потерян или будет там неиспользованным?Я спрашиваю об этом, потому что я не закрываю открытый сеанс должным образом, вызывая c_closeSession.

Веб-сервис реализован через пул потоков

Спасибо

Ответы [ 3 ]

1 голос
/ 13 июля 2010

Вы должны позвонить C_Finalize(), когда закончите работу с библиотекой cryptoki.Хорошо написанная реализация может быть надежной против того, чтобы вы этого не делали, но нет никаких гарантий.Ваши открытые сеансы могут поддерживаться в HSM и, возможно, в драйвере.

Настоятельно рекомендуем позвонить C_Finalize() из вашего Application_End().

1 голос
/ 05 июля 2010

С теоретической точки зрения, вы должны прочитать PKCS # 11 spec , там все написано, начиная с раздела 6.6 и далее

С практической точки зрения приложение становится приложением криптоки после вызова C_Initialize. Понятие сеанса и его идентификатор могут быть переданы небольшой библиотекой-оберткой в ​​продолжительный процесс PKCS # 11, который фактически общается с HSM, но не может. Если процесс, который был приложением криптоки, умирает, то будут действовать все виртуальные ресурсы (что такое сеанс).

Где именно проблема ? Открытие сеанса в большинстве случаев может быть довольно дешевой операцией, если вы не уверены (не измерили), что это узкое место, не оптимизируйте, не открывайте и не закрывайте сеанс для запроса, если вы не можете контролировать продолжительность жизни процесса криптоки.

0 голосов
/ 09 августа 2018

если я понял это, вам нужно создать "глобальный" логин для этого сеанса. Кроме того, вам нужно открывать / закрывать сеанс для каждого локального сеанса.

Итак, - Глобальная переменная с «Логин» (один раз при запуске или когда вы хотите) - Проверьте глобальный статус входа в систему, когда вы создадите новую сессию. - Создание отдельных сеансов для каждого действия (закрытие "локальной" сессии, а не глобального входа в систему)

При этом вы получаете глобальную переменную с зарегистрированным сеансом и отдельным сеансом, используя этот глобальный логин.

Удачи

...