программный импорт.сертификат cer в хранилище ключей
Как я могу импортировать a .сертификат p12 из classpath в хранилище ключей java? Сначала я использовал InstallCert https://code.google.com/p/java-use-examples/source/browse/trunk/src/com/aw/ad/util/InstallCert.java и внес некоторые изменения, чтобы сертификат сервера был импортирован в хранилище ключей в каталоге установки java. Это работает нормально, но теперь я хочу загрузить сертификат из моего пути к классу.
EDIT: я просто использую a .сертификат cer, см. следующий ответ
1 ответ:
Ответ:
InputStream certIn = ClassLoader.class.getResourceAsStream("/package/myCert.cer"); final char sep = File.separatorChar; File dir = new File(System.getProperty("java.home") + sep + "lib" + sep + "security"); File file = new File(dir, "cacerts"); InputStream localCertIn = new FileInputStream(file); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); keystore.load(localCertIn, passphrase); if (keystore.containsAlias("myAlias")) { certIn.close(); localCertIn.close(); return; } localCertIn.close(); BufferedInputStream bis = new BufferedInputStream(certIn); CertificateFactory cf = CertificateFactory.getInstance("X.509"); while (bis.available() > 0) { Certificate cert = cf.generateCertificate(bis); keystore.setCertificateEntry("myAlias", cert); } certIn.close(); OutputStream out = new FileOutputStream(file); keystore.store(out, passphrase); out.close();
Для Java Web Start не используйте загрузчик классов, используйте сам класс:
InputStream certIn = Certificates.class.getResourceAsStream("/package/myCert.cer");