2016-03-28 17 views
1

にエイリアス名に基づいていない、私は以下のコードを使用して、エイリアス名に基づいて、キーストアから証明書を、取得しています キーストアから証明書を取得するJava

KeyStore keyStore = KeyStore.getInstance("Windows-MY"); 

    Enumeration aliasesEnum = keyStore.aliases(); 

    while(aliasesEnum.hasMoreElements()) 
    { 
     aAliasName = (String)aliasesEnum.nextElement(); 
     X509Certificate certificate = (X509Certificate)keyStore.getCertificate(aAliasName); 
    } 

は、現在のトークンの代わりからエイリアスを取得する方法はありますキーストアから取得しますか?

ありがとうございます。

+0

今すぐ別の問題が発生した場合は、新しい質問を作成してください。あなたの質問が答えられた後に変更することは悪い習慣です。なぜなら、答えはもう質問に一致しないからです。 – Omikron

+0

@Vijaya、Omikronが指摘したように、あなたの質問を元に戻して、あなたの新しい問題の新しい質問を開いてください。したがって、以下の回答は質問と一致し、将来この質問に訪れる人々は、自分の問題を解決するものを知っています。問題を解決した回答を受け入れることができるので、この問題は解決します。 –

答えて

1

エイリアスを知る以外に特定の証明書を取得することはできません。

ベストプラクティスは、ユースケースに固有のエイリアスを付けることで、どの証明書を取得しているかを知ることができます。

KeyStore APIを使用して証明書を保存する場合は、containsAlias(alias)を実行して、保存する前にエイリアスが存在するかどうかを確認できます。

+0

ご返信ありがとうございます。私はこのリンクhttps://joinup.ec.europa.eu/software/sd-dss/issue/problem-possible-keystore-aliases-collision-when-using-mscapiに従ってこの問題を解決しました。 – Vijaya

+0

私は別の問題を抱えています。更新された質問をご確認ください。 – Vijaya

0

通常、エイリアス名は一意です。これは、MSCAPIキーストア固有の問題です。この問題について、いくつかのバグレポート(そのうちのいくつかは非常に古い)があります

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=2162058

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6483657

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8058544

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6672015

が最後のリンクをたどって、それが回避策が含まれています。基本的には、リフレクションAPIを介してエイリアス名を独自のものに変更する必要があります(リンクのコードを参照)。まったくクリーンなソリューションではありませんが、残念なことに唯一の方法です。

+0

ご返信ありがとうございます。私はこのリンクhttps://joinup.ec.europa.eu/software/sd-dss/issue/problem-possible-keystore-aliases-collision-when-using-mscapiに従ってこの問題を解決しました。 – Vijaya

+0

これはあなたが提供した最後のリンクと同じだと思います。 – Vijaya

+0

私は別の問題を抱えています。更新された質問をご確認ください。 – Vijaya

関連する問題