Почему Cryptoki.C_OpenSession иногда отключается от HSM - PullRequest
0 голосов
/ 12 октября 2018

Я создал веб-сервис isAlive, чтобы проверить, могу ли я создать сеанс с программным обеспечением HSM с помощью Cryptoki, я автоматизировал выполнение своего веб-сервиса с помощью SoapUI, поэтому каждые 40 с выполняю свой сервис в цикле, он работает хорошо, нопосле нескольких звонков я не могу подключиться к своему HSM, пока не перезапущу свое приложение: это часть кода, которую я использовал для подключения к HSM

// create session handle 
        CK_SESSION_HANDLE session= new CK_SESSION_HANDLE();

        // return code
        CK_RV retcode;

        // get session
        retcode=Cryptoki.C_OpenSession(safeNetSlot, CKF.RW_SESSION, null, null, session);
        checkRetCode(retcode, "Could not open session on HSM");

        log.debug("Session [{}]",session.longValue());

        // do login 
        final String recovHsmPassword = PasswordManagement.recoverPassword(hsmPassword);
        retcode=Cryptoki.C_Login(session, CKU.USER, recovHsmPassword.getBytes(), recovHsmPassword.length());
        checkRetCode(retcode, "Could not login as user");

Во время выполнения моей услуги я смотрю журналы Iпосмотрите, что session.longValue () увеличивается с каждым вызовом:

Это журналы:

    INFO 5056 --- [nio-8191-exec-5] ccom.test.app.V1Controler  : Request for isAlive API
    DEBUG 5056 --- [nio-8191-exec-5] com.test.app.hsm.HsmService  : Session [1]
    INFO 5056 --- [nio-8191-exec-5] com.test.app.V1Controler  : Request for isAlive API
    DEBUG 5056 --- [nio-8191-exec-5] com.test.app.hsm.HsmService  : Session [2]
    INFO 5056 --- [nio-8191-exec-5] com.test.app.V1Controler  : Request for isAlive API
    DEBUG 5056 --- [nio-8191-exec-5] com.test.app.hsm.HsmService  : Session [3]
    INFO 5056 --- [nio-8191-exec-5] com.test.app.V1Controler  : Request for isAlive API
                                                     ......
    INFO 5056 --- [nio-8191-exec-5] com.test.app.V1Controler  : Request for isAlive API     
    DEBUG 5056 --- [nio-8191-exec-5] com.test.app.hsm.HsmService  : Session [1176]
INFO 5056 --- [nio-8191-exec-5] com.test.app.V1Controler  : Request for isAlive API
2018-08-14 10:39:06.550 ERROR 1 --- [nio-8443-exec-3] com.test.app.hsm.HsmService  : HSM return error [MSG_ERROR general error] 

Я спрашиваю, есть ли у кого-то идея, как работает Cryptoki.C_OpenSession, и почему я отключаюсь от своегоHSM

1 Ответ

0 голосов
/ 13 октября 2018

Обычно у HSM ограниченное количество доступных сеансов.В настоящее время вы открываете сессии, но никогда не закрываете их с помощью C_CloseSession.Вы должны обрабатывать сеансы, как если бы они были ресурсами, а ресурсы могут быть редкими.

Обратите внимание, что есть также функция с именем C_TokenInfo, которая может использоваться для проверки состояния токена.Убедитесь, что вы используете правильную функцию для работы.Вы не хотите использовать пароль, когда не требуется.

...