2012-03-19 3 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