Programmare l’importazione di certificati di affidabilità CA nel file di archivio chiavi esistente senza utilizzare keytool

Vorrei creare un programma JAVA che importi la .cer CA nel file keystore esistente. In tal modo l’utente finale può inserire il certificato CA più comodo (senza utilizzare CMD e digitare il comando).

È ovunque che il codice JAVA può farlo?

Cerco in qualche modo, ma ancora non riesco a ottenere il certificato in Java

CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream certstream = fullStream (certfile); Certificate certs = cf.generateCertificates(certstream); 

l’errore è di tipo incompatibile, c’è qualche altro suggerimento?

Grazie tante

    Ho risolto la domanda. Ecco il codice

     import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.Key; import java.security.KeyStore; import java.security.cert.Certificate; import java.io.IOException; import java.io.InputStream; import java.io.DataInputStream; import java.io.ByteArrayInputStream; import java.security.spec.*; import java.security.cert.Certificate; import java.security.cert.CertificateFactory; import java.util.Collection; public class ImportCA { public static void main(String[] argv) throws Exception { String certfile = "yourcert.cer"; /*your cert path*/ FileInputStream is = new FileInputStream("yourKeyStore.keystore"); KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); keystore.load(is, "yourKeyStorePass".toCharArray()); String alias = "youralias"; char[] password = "yourKeyStorePass".toCharArray(); ////// CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream certstream = fullStream (certfile); Certificate certs = cf.generateCertificate(certstream); /// File keystoreFile = new File("yourKeyStorePass.keystore"); // Load the keystore contents FileInputStream in = new FileInputStream(keystoreFile); keystore.load(in, password); in.close(); // Add the certificate keystore.setCertificateEntry(alias, certs); // Save the new keystore contents FileOutputStream out = new FileOutputStream(keystoreFile); keystore.store(out, password); out.close(); } private static InputStream fullStream ( String fname ) throws IOException { FileInputStream fis = new FileInputStream(fname); DataInputStream dis = new DataInputStream(fis); byte[] bytes = new byte[dis.available()]; dis.readFully(bytes); ByteArrayInputStream bais = new ByteArrayInputStream(bytes); return bais; } } 

    La speranza può aiutare quelle persone che ne hanno bisogno. È solo un semplice codice che inserisce il file .cer CA cert nel tuo keystore senza usare keytool in CMD =)

    Scarica i certificati dai link e archivia in un percorso specifico .. quindi carica quel file in trustStore durante il runtime utilizzando il codice sottostante .. spero che questo esempio ti possa aiutare ..

     KeyStore keyStore = KeyStore.getInstance("JKS"); String fileName = "D:\\certs_path\\cacerts"; // cerrtification file path System.setProperty("javax.net.ssl.trustStore", fileName);