1

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

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

    Enumeration aliasesEnum = keyStore.aliases();

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

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

前もって感謝します。

4

2 に答える 2

1

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

ベスト プラクティスは、ユース ケースで一意のエイリアスを使用することです。これにより、どの証明書を取得しているかがわかります。

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

于 2016-03-28T16:26:14.283 に答える
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 を介してエイリアス名を一意のものに変更する必要があります (リンクのコードを参照)。正確にはクリーンなソリューションではありませんが、残念ながら唯一の方法です。

于 2016-03-28T21:17:42.840 に答える