2017-04-26 50 views
0

我使用NCryptoki DLL來管理我們的HSM的acccess。Pkcs#11與NCryptoki錯誤N. 145

我使用C#windows服務。該服務是一個套接字:它監聽請求並訪問HSM,執行一些操作。

使用我的代碼acccess HSM,我隨機得到這個消息:

Cryptware.NCryptoki.CryptokiException:錯誤ñ。 145

只有很少的電話總得到這個消息,但它很煩人。你知道爲什麼會發生這種情況嗎?

我發現145 0x00000091 CKR_OPERATION_NOT_INITIALIZED有一個在指定的會話

我得到這個錯誤適當的類型沒有主動操作,例如,當我打電話find方法:

Cryptware.NCryptoki.CryptokiException:錯誤n。 145在Cryptware.NCryptoki.CryptokiObjects.Find(CryptokiCollection attList,Int32 nMaxCount)

看來會話無效。

我們的服務是一個監聽套接字。它會收到大量的請求,並且很少有這些請求會因此消息而失敗。你知道爲什麼嗎?

奇怪的點是相同的請求很少失敗,所有其他時間的作品。

回答

1

您很可能沒有正確使用多線程環境中的PKCS#11庫和PKCS#11會話。有關更多詳細信息,請參見my older answer到類似的問題。

+0

嗨,奇怪的是我的服務只有一個會話。我有一個循環來保持這個會話(每分鐘發送一個請求)。 只有這些請求是每天約60 * 24 = 1440的請求,再加上所有真正的請求,我認爲總共有大約2000/2500個請求。 從這個數字開始,只考慮約20個每日請求失敗並出現此錯誤。此外,我們僅在一週內發生此錯誤,當時我們更改了HSM和連接到HSM的虛擬機。這可能是一個問題嗎? –

+0

我補充一點:在之前的虛擬機中,以前的HSM用於完美工作 –

+0

@PieroAlberto在服務中使用單個會話在套接字上偵聽聽起來很可疑。你是否阻止對服務的併發訪問,這樣會話就不會被兩個線程同時使用? – jariq