2

クライアントのキーストアとして CAC カードを使用する 2way SSL で Java クライアントを実行しようとしています。クライアント プログラムに次のシステム プロパティを追加して機能させ、java.securityファイルを変更してpcks11プロバイダーを追加しました。

System.setProperty("javax.net.ssl.keyStoreType", "pkcs11");
System.setProperty("javax.net.debug", "ssl");

プログラムは正常に動作し、ハンドシェイクは正常に行われます。ただし、CAC カードに複数の信頼できる証明書がある場合、デフォルトの証明書が使用されます。クライアント認証を行うために使用する証明書を指定したいのですが (おそらくエイリアス名を指定して)、それを行うためのシステム プロパティが見つかりませんでした。

2way SSL がクライアント認証にエイリアス名を使用するように、エイリアス名をシステム プロパティとして指定するにはどうすればよいですか?

エイリアス名を指定する別の方法はありますか? たとえば、任意のブラウザーからサーバー URL にアクセスすると、証明書の選択プロンプトが表示され、選択した証明書で接続が確立されます。

4

2 に答える 2

0

クライアント証明書を選択するために、デフォルトの実装(sun.security.ssl.X509KeyManagerImplSun JREを使用していると仮定)は、要求に使用できる最初の証明書を選択します。

PKCS#11は少し特殊なケースです。私の知る限り、スロットごとに1つの秘密鍵と証明書チェーンしかありません。PKCS#11プロバイダー構成でスロットが指定されていない場合、デフォルトのスロットは0になります。

于 2010-07-14T08:26:24.487 に答える
0

Java ssl プロパティには特定のプロパティがないため、これをサポートする別の既存のキー マネージャー実装を検索するか、独自のカスタム キー マネージャーを作成して、エイリアス名で特定の証明書を選択できるようにすることをお勧めします。

ありがとう、サニー。

于 2011-03-09T04:28:34.947 に答える