3

比較的新しい SunMSCAPI セキュリティ プロバイダを試しています。ブラウザーに証明書選択ボックスをポップアップさせる単純なアプレットを作成したいと考えています。そこから取ります。私はこれをある方法でグーグル検索し、別の方法でグーグル検索しました。何かアドバイス?

4

2 に答える 2

1

私は似たようなことに取り組んでいます (苦労しています) - 非 Web アプリの場合.

于 2011-02-08T20:07:08.883 に答える
0

プロバイダーを使用してSunMSCAPI、ローカル クライアントの Windows キーストアをインスタンス化できます。次のコードを使用して簡単に実行できます。

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

getInstance()または、必要に応じて、プロバイダーを呼び出しに渡す代わりにセキュリティ リストに追加できます。

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

おそらく、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 ビット バージョンのサポートが追加されたことに注意してください。

于 2016-09-26T09:41:35.713 に答える