2017-05-03 13 views
0

JDK 1.8.0_111をランタイムに使用するアプリケーションをTomcat 9で実行しています.Windows 7 x64ではSunPKCS11を通してNitroKey HSMを使用しようとしています。 CSPおよびOpenSCドライバを使用します。SunPKCS11経由のHSMはコマンドラインで動作し、TomcatでホストされたWebアプリケーションでは失敗する

これは、Tomcatサービスが使用するのと同じアカウントで実行されているシェルを含む、コマンドラインから正常に動作します。

ただし、Tomcatの場合、SunPKCS11コンストラクタは "Initialization failed"というメッセージとともにProviderExceptionをスローします。これまで私はCKR_GENERAL_ERRORを返すC_GetSlotInfoにこれをデバッグしました。これはPKCS11Exception(詳細はありません)になり、ProviderExceptionでラップされます。

スロット番号が正しい - NitroKeyには1つのスロットしかないため、番号は0です。アプリケーション自体のほかに、keytool、OpenSSLなどでHSMをPKCS#11から使用しても問題はありません。 (または、CAPIを通して)それはTomcatの下でのみ失敗します。

アイデア? HSM(またはスマートカード)が削除されて再挿入された場合(たとえばremove and insert smartcard using sunpkcs#11 and tomcatなどを参照)、この種の障害に関するクエリを投稿した人もいますが、ここには該当しません。トークンは削除されず、他のすべてのものにアクセス可能なままです。しかし、これらの質問は、Tomcatの下でSunPKCS11とOpenSCを使用することに固有の制限はないことを暗示しています。

私はJDKのソースを取得し、さらにC_GetSlotInfoにデバッグし、適切なオプションを指定してkeytoolを起動するなどのいくつかの他の実験を試みて、カードと通話できるかどうかを調べます。しかし、誰かが他の提案があれば、私はそれらを聞いてうれしいです。

誰でも詳細を知りたい場合:私はSunPKCS11コンストラクタを1つの引数、つまり設定ファイルへのパスで起動します。ファイルを正常に読み込んでいます(ファイルパスが偽であるか、ファイルが読めない場合は別の例外があります)。ファイルは非常に簡単です:障害が発生した時点で

# PKCS#11 configuration file for Java to use NitroKey in slot 0 on Windows 
name = NitroKey 
library = c:/Windows/System32/opensc-pkcs11.dll 
slotListIndex = 0 

、SunPKCS11は、キーコンテナ名またはHSM PINなど、まだ他の詳細を見ていません。コンストラクタが例外をスローしなかった場合、後でそれらが来るでしょう。

答えて

0

Microsoft IISアプリケーションサーバーの私を含む一部のユーザーencountered similar problem。ユーザーアカウントをLocalSystemまたはLocalServiceに変更すると、通常は問題を解決するのに役立ちました。

+0

ありがとうございました。 Tomcatをさまざまなアカウントで実行しようとしていましたが(今はセキュリティ上の目的で通常の特権アカウントを使用しています)、忘れてしまいました。リマインダーを気に入ってください。私はいくつかの実験を行い、報告する。 –

+0

これは、長い一日の後に質問を投稿するためのものです。デスクトップとのインタラクトを有効にしてローカルシステムとして実行しているので(サービスデスクトップではなくプライマリセッション/ WinStation /デスクトップで実行中)、Tomcatは実際にHSMにアクセスできます。これは対話型デスクトップでローカルシステムとして署名サーバを実行したくないので、より多くの調査が必要ですが、回避策です。ありがとう! –

+0

それ以上の実験では、デスクトップとのインタラクトが必要ないことがわかっているので、デスクトップ上の問題ではありません。 OK、おそらく1)ログオンタイプまたは2)トークン特権のいずれかと関係があるでしょう。私はそれをそこから絞り込み、特権アカウントを減らして走らせることができます。 (あるいは、私のアプリケーションでJNIを使​​ってスレッドトークン内の不要なprivを無効にすることもできますが、やや緩和されます)。もう一度おねがいします。 –