utiliza respuesta recomienda públicas propietario migrar las kit introduzca herramienta formato ejemplo desarrollo crear contraseña coinciden claves certificados certificado almacén almacen administración java ssl certificate self-signed keytool

respuesta - keystore java ejemplo



Cómo generar, firmar e importar certificado SSL desde Java (2)

Posible duplicado:
Generar certificados, claves públicas y privadas con Java

Necesito generar certificados autofirmados en tiempo de ejecución, firmarlos e importarlos al almacén de claves de Java. Puedo hacer esto usando "keytool" y "openssl" desde la línea de comandos de la siguiente manera:

keytool -import -alias root -keystore keystore.txt -file cacert.pem keytool -genkey -keyalg RSA -keysize 1024 -alias www.cia.gov -keystore keystore.txt keytool -keystore keystore.txt -certreq -alias www.cia.gov -file req.pem openssl x509 -req -days 3650 -in req.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out reqsigned.pem keytool -import -alias www.cia.gov -keystore keystore.txt -trustcacerts -file reqsigned.pem

Puedo, por supuesto, enviar mi aplicación con keytool y los binarios de openssl y ejecutar los comandos anteriores de Java, pero estoy buscando un enfoque más limpio que me permita hacer todo lo anterior utilizando Java puro.

¿Alguna biblioteca que pueda usar?


import java.io.FileOutputStream; import java.security.KeyStore; import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.util.Date; // import sun.security.tools.keytool.CertAndKeyGen; // Use this for Java 8 and above import sun.security.x509.CertAndKeyGen; import sun.security.x509.X500Name; public class UseKeyTool { private static final int keysize = 1024; private static final String commonName = "www.test.de"; private static final String organizationalUnit = "IT"; private static final String organization = "test"; private static final String city = "test"; private static final String state = "test"; private static final String country = "DE"; private static final long validity = 1096; // 3 years private static final String alias = "tomcat"; private static final char[] keyPass = "changeit".toCharArray(); // copied most ideas from sun.security.tools.KeyTool.java @SuppressWarnings("restriction") public static void main(String[] args) throws Exception { KeyStore keyStore = KeyStore.getInstance("JKS"); keyStore.load(null, null); CertAndKeyGen keypair = new CertAndKeyGen("RSA", "SHA1WithRSA", null); X500Name x500Name = new X500Name(commonName, organizationalUnit, organization, city, state, country); keypair.generate(keysize); PrivateKey privKey = keypair.getPrivateKey(); X509Certificate[] chain = new X509Certificate[1]; chain[0] = keypair.getSelfCertificate(x500Name, new Date(), (long) validity * 24 * 60 * 60); keyStore.setKeyEntry(alias, privKey, keyPass, chain); keyStore.store(new FileOutputStream(".keystore"), keyPass); } }


Use BouncyCastle para generar certificados. Creo que también te permite importarlos al almacén de claves de Java.

También su pregunta parece ser muy similar a esta .