HSM - Cryptoki - Sessions - Timeout
-
02-10-2019 - |
Frage
Meine Anwendung Zugriff auf die HSM über einen ASP.NET Web-Service über PKCS # 11. Ich initialisieren die Cryptoki Bibliothek und ein Sitzungshandle erhalten. Web-Service-Halt an diesen Griff auszuführen Verschlüsselung / Entschlüsselung / Unterzeichnung / Verifizieren in einem Batch-Modus.
Das Problem, das ich bin vor ist Das ASP.NET Web-Service-Timeouts nach 20 Minuten. Diese ACT- ich denke, entlädt die Cryptoki Bibliothek und die von der Web-Service gehalten Sitzungs-Handle ungültig. Ja, ich stimme zu, dass der ASP.NET Web-Dienst neu konfiguriert wird, kann nicht auf Time-out, was die Cryptoki Bibliothek halten wird immer geladen.
Meine Frage ist, was mit dem Sitzungs-Handle passiert, die ich in erster Linie aus dem HSM erhalten ?. Wird es verloren oder wird es dort nicht verwendet wird? Ich bin das, weil zu fragen, ich nicht die geöffnete Sitzung ordnungsgemäß durch den Aufruf c_closeSession
bin geschlossen wird.
Der Web-Service wird über ein Gewinde Pool implementiert
Danke
Lösung
Sie sind auf Anruf C_Finalize()
soll, wenn Sie die Cryptoki Bibliothek getan verwenden. Eine gut geschriebene Implementierung könnte robust sein gegen Sie nicht zu tun, aber es gibt keine Garantien. Ihre offenen Sitzungen am Leben gehalten werden können, auf dem HSM und vielleicht im Treiber.
betrachten Stark Aufruf C_Finalize()
von Ihrem Application_End()
.
Andere Tipps
Von der theoretischen Perspektive, sollten Sie die PKCS # 11-Spezifikation , es ist alles da geschrieben, aus dem Abschnitt 6.6 ab
Vom praktischen perspecgive wird eine Anwendung eine Cryptoki-Anwendung nach C_Initialize aufruft. Das Konzept einer Sitzung und seine Kennung kann durch eine kleine Wrapper-Bibliothek zu einem longrunning PKCS # 11-Prozess weitergeleitet werden, dass tatsächlich an den HSM spricht, kann aber nicht. Wenn der Prozess, der eine Cryptoki Anwendung stirbt war, wird dies alle die virtuellen Ressourcen (was eine Sitzung).
Wo genau ist das Problem ? Öffnen einer Session könnte eine ziemlich billig Betrieb die meiste Zeit sein, wenn Sie sicher sind (gemessen haben), dass es der Engpass ist, nicht optimieren und öffnen und schließen eine Sitzung für eine Anfrage, wenn Sie nicht die Lebensdauer steuern der Cryptoki Prozesses.
, wenn ich das verstanden, müssen Sie für diese Sitzung eine „globale“ Login erstellen. Außerdem müssen Sie zum Öffnen / Schließen Sitzung für jede lokale Sitzung.
Also, - Globale Variable mit „Login“ (einmal beim Start oder wenn u wünscht) - Überprüfen Sie globalen Login-Status, wenn Sie eine neue Sitzung erstellen wird. - Erstellen Sie Einzelsitzungen für jede Aktion (Schließen der „lokalen“ -Sitzung nicht die globale Login)
Damit erhalten Sie eine globale Variable mit einer protokollierten Sitzung und einzelner Sitzung, dass die globale Login verwenden.
Viel Glück