2012-03-19 13 views
0

個人用ストアからパスワードで証明書を取得するには、Javaプログラミングを使用します。 証明書を取得するコードが見つかりましたが、すべての証明書が表示されます。これらの証明書データは、これらの関連するパスワードで開く必要はありませんでした。 私はこのようなスタイルの証明書を表示したくありません。私はコード・タイプ・タイプを書くと思います。私が望む証明書を選択し、この証明書のパスワードをブラウザに追加して、この証明書情報を表示します。私の個人ストアから証明書を取得する方法

KeyStore ks = KeyStore.getInstance("Windows-MY"); 
    ks.load(null, null) ; 
    Enumeration en = ks.aliases() ; 
    while (en.hasMoreElements()) { 
     String aliasKey = (String)en.nextElement() ; 
     Certificate c = ks.getCertificate(aliasKey) ; 
     System.out.println("---> alias : " + aliasKey) ; 
     if (ks.isKeyEntry(aliasKey)) { 
      Certificate[] chain = ks.getCertificateChain(aliasKey); 
      System.out.println("---> chain length: " + chain.length); 
      X509Certificate Cert = null; 
      for (Certificate cert: chain) { 
       System.out.println(cert); 
      } 
     }     
    } 

このコードを修復するにはどうすればよいですか?そして、証明書にアクセスするためのC#コードが見つかりました。私はまた、このようにjavaプログラムで使用したいと思います。次のC#コードをJavaコードに変換するには? C#

X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine); 
store.Open(OpenFlags.ReadOnly); 
X509Certificate2Collection col = store.Certificates.Find(X509FindType.FindBySerialNumber, "{serial number no space}", true); 
//service is the webservice that need to //be authenticated using X509 certificate 
TestWebService service = new TestWebService(); 
//Note, we should find the certificate from the the 
//root certificate store on local machine if the 
//certificate is imported correctly and the serial 
//number is correct 
if (col.Count == 1) 
{ 
    //all we need to do is to add the certificate 
    //after that we can use the webservice as usual 

    service.ClientCertificates.Add(col[0]); 
    service.Test(); 

} 
+0

あまりにも曖昧です。誰もあなたのコードを書き直すつもりはありません。何を試しましたか? – EJP

+0

私の個人的なストアからパスワードを使って特定の証明書を取得する方法を知りたい。このコードは私の店からすべての証明書を取得することですが、私が必要とする特定の証明書を取得したいのです。どのようにプログラムを書くのですか?私のコードと同じではありません。 –

+0

Javadocをチェックすることをお勧めします。 'KeyStore'から物事を取り出す他の方法は、内容全体を反復するだけです。 – EJP

答えて

1

パスワードによる

アクセス証明書は、証明書固有ではありません。パスワードはキーストア用です。パスワードはスキーマで、個々のテーブルではないデータベースと似ています。

単一の証明書で検索する他の質問に答えるには、事前にエイリアスを知り、そのエイリアスを使用して証明書を取得する必要があります。

あなたのコードにはks.getCertifcate("alias")

+0

個々のキーストアエントリはパスワードを持つことができます。 – EJP

+0

これに関するいくつかのリンクを投稿できますか? – Santosh

+0

http://docs.oracle.com/javase/6/docs/api/java/security/KeyStore.html#getKey(java.lang.String、%20char []) – EJP

関連する問題