2011-02-06 11 views
3

私は比較的新しいSunMSCAPIセキュリティプロバイダを試しています。私は、ブラウザに証明書選択ボックスをポップアップするように促す簡単なアプレットを作成したい。私はそこからそれを取る。 私はこれを片方向に、そして別の方法でgoogledしました。何かアドバイス?MSCAPI Javaの証明書選択ボックス。 SunMSCAPI?

答えて

1

私は似たように(苦労)働いている - ..以外のWebアプリケーション用ものの、これまで私のために働いた唯一のソリューションを - C#(MCPPを使ってラップ)にJNIを行うことです。..

+1

私はJNIを避けようとします。私は新しいSunMSCAPI JCEがJNIを使​​わずにこれを実現できることを期待しています。 – Stephan

+0

@luckylak私はこれが古いことを知っていますが、あなたと同じことを達成しようとしています。 Windows証明書ストアとWindows証明書選択GUIを呼び出すためにJNIをどのように使用しましたか? – Seephor

0

SunMSCAPIプロバイダを使用して、ローカルクライアントウィンドウのキーストアをインスタンス化できます。それはおそらく既に追加されますことを

SunMSCAPI providerMSCAPI = new SunMSCAPI(); 
Security.addProvider(providerMSCAPI); 
KeyStore ks = KeyStore.getInstance("Windows-MY"); 
ks.load(null, null); 

注:

KeyStore keyStore = KeyStore.getInstance("Windows-MY",new SunMSCAPI()); 
keyStore.load(null, null); 

それとも好む場合は、代わりにgetInstance()コールにそれを渡すのセキュリティリストにプロバイダを追加することができます:あなたは、単にこのコードを使用してそれを行うことができますデフォルトでは、Windows OS上のJavaインストールのセキュリティプロバイダの一覧に表示されます。

ので、私は、例えばにあなたの例を与えるあなたの質問に多くの詳細がありませんが、このプロバイダの使用を説明するためのローカルクライアントのWindowsストアからすべてのエイリアスおよび関連証明書の件名を示しています。

package org.catcert.crypto.keyStoreImpl.windows; 

import java.security.KeyStore; 
import java.security.cert.X509Certificate; 
import java.util.ArrayList; 
import java.util.Collections; 

import sun.security.mscapi.SunMSCAPI; 

public class Example { 

    public static void main(String args[]) throws Exception { 
     KeyStore keyStore = KeyStore.getInstance("Windows-MY",new SunMSCAPI()); 
     keyStore.load(null, null); 

     // copy to avoid concurrent problems with aliases... 
     ArrayList<String> aliases = Collections.list(keyStore.aliases()); 
     for(String alias : aliases){ 
      System.out.println("keyEntry alias: " + alias); 
      X509Certificate cert = (X509Certificate)keyStore.getCertificate(alias); 
      System.out.println("Certificate subject: " + cert.getSubjectDN()); 

     } 
    } 
} 

SunMSCAPIはJava 1.6で導入されましたが、Java 1.7では64ビット版のサポートが追加されています。

関連する問題