Цитата(V1tal1us @ 9.7.2007, 20:29 ) | В наличии у меня есть: хранилище сертификатов, корневой сертификат той конторы с которой Я буду обмениваться информацией по SSH, и мой подписанный сертификат ( подписала опят же та контора).
|
Конкретизируйте. В каком формате у вас сейчас находятся все перечисленные вещи и в каком формате они вам нужны.
Предполагаю, что сейчас у вас все эти вещи хранятся в JKS (т.е. контейнере утилиты keytool), и вам нужно получить сии вещи в pkcs#12 формате.
Для этих целей можно воспользоваться крипто библиотекой boucycastle, взять можно отсюда http://bouncycastle.org/latest_releases.html. Вам нужен только провайдер. Данная библиотека реализует JCA интерфейс KeyStore, для файлов формата PKCS#12.
Соответственно, можете в коде экспортить все что вам нужно из JKS в pkcs#12.
вот небольшой примерчик.
| Код | public static void main(String args[]) throws Exception { char pin[] = "123456".toCharArray(); char newPin[] = "654321".toCharArray(); KeyStore jks = KeyStore.getInstance("JKS", "SUN"); jks.load(new FileInputStream(".keystore"), pin); Enumeration aliases = jks.aliases(); String alias = (String)aliases.nextElement(); X509Certificate cert =(X509Certificate)jks.getCertificate(alias); PrivateKey privKey = (PrivateKey)jks.getKey(alias, pin); Security.addProvider(new BouncyCastleProvider()); KeyStore p12 = KeyStore.getInstance("PKCS12", "BC"); p12.load(null, null); Certificate certChain[] = new Certificate[1]; certChain[0] = cert; p12.setKeyEntry(alias, privKey, newPin, certChain); p12.store(new FileOutputStream("keystore.p12"), newPin); System.out.println("-----------------------------");
}
|
Там вот есть моментик один, насчет хранения сертификата ввиде цепочки сертификатов, или как отдельных, я сделал как цепочку сертификата, на верхний уровень кстати можно поместить, корневой сертификат организации. или же можно добавить сертификат ввиде p12.setCertificateEntry() Решать вам.
Если есть вопросы, всегда рады.
|