puedo privada marcada exportar exportable con como clave certificado tomcat ssl certificate self-signed keystore

tomcat - marcada - Cómo exportar una clave privada desde un almacén de claves de un certificado autofirmado



exportar certificado con clave privada marcada como no exportable (4)

Acabo de crear un certificado autofirmado en una caja de Linux con Tomcat 6.

Creé las claves así, válidas por 10 años:

keytool -genkey -alias tomcatorange -keyalg RSA -validity 3650

y copió el almacén de claves en una carpeta en tomcat, y actualicé server.xml para que apunte al almacén de claves.

Ahora el administrador de mi red solicita la clave pública y la clave privada (para nuestro equilibrador de carga)

Puedo generar la clave pública usando:

openssl s_client -connect mydomain.com:8443

Pero, ¿cómo puedo exportar / recuperar la clave privada?



Es un poco complicado. Primero, puede usar keytool para poner la clave privada en formato PKCS12, que es más portátil / compatible que los diversos formatos de almacén de claves de Java. Este es un ejemplo que toma una clave privada con el alias ''mykey'' en un almacén de claves Java y la copia en un archivo PKCS12 llamado myp12file.p12 . [tenga en cuenta que en la mayoría de las pantallas, este comando se extiende más allá del lado derecho del cuadro: debe desplazarse hacia la derecha para verlo todo]

keytool -v -importkeystore -srckeystore .keystore -srcalias mykey -destkeystore myp12file.p12 -deststoretype PKCS12 Enter destination keystore password: Re-enter new password: Enter source keystore password: [Storing myp12file.p12]

Ahora, el archivo myp12file.p12 contiene la clave privada en formato PKCS12 que puede ser utilizada directamente por muchos paquetes de software o procesada mediante el comando openssl pkcs12 . Por ejemplo,

openssl pkcs12 -in myp12file.p12 -nocerts -nodes Enter Import Password: MAC verified OK Bag Attributes friendlyName: mykey localKeyID: 54 69 6D 65 20 31 32 37 31 32 37 38 35 37 36 32 35 37 Key Attributes: <No Attributes> -----BEGIN RSA PRIVATE KEY----- MIIC... . . . -----END RSA PRIVATE KEY-----

Imprime la clave privada sin cifrar.

Tenga en cuenta que esta es una clave privada y usted es responsable de apreciar las implicaciones de seguridad de eliminarla de su almacén de claves de Java y moverla.


public static void main (String [] args) {

try { String keystorePass = "20174"; String keyPass = "rav@789"; String alias = "TyaGi!"; InputStream keystoreStream = new FileInputStream("D:/keyFile.jks"); KeyStore keystore = KeyStore.getInstance("JCEKS"); keystore.load(keystoreStream, keystorePass.toCharArray()); Key key = keystore.getKey(alias, keyPass.toCharArray()); byte[] bt = key.getEncoded(); String s = new String(bt); System.out.println("------>"+s); String str12 = Base64.encodeBase64String(bt); System.out.println("Fetched Key From JKS : " + str12); } catch (KeyStoreException | IOException | NoSuchAlgorithmException | CertificateException | UnrecoverableKeyException ex) { System.out.println(ex); } }


http://anandsekar.github.io/exporting-the-private-key-from-a-jks-keystore/

public class ExportPrivateKey { private File keystoreFile; private String keyStoreType; private char[] password; private String alias; private File exportedFile; public static KeyPair getPrivateKey(KeyStore keystore, String alias, char[] password) { try { Key key=keystore.getKey(alias,password); if(key instanceof PrivateKey) { Certificate cert=keystore.getCertificate(alias); PublicKey publicKey=cert.getPublicKey(); return new KeyPair(publicKey,(PrivateKey)key); } } catch (UnrecoverableKeyException e) { } catch (NoSuchAlgorithmException e) { } catch (KeyStoreException e) { } return null; } public void export() throws Exception{ KeyStore keystore=KeyStore.getInstance(keyStoreType); BASE64Encoder encoder=new BASE64Encoder(); keystore.load(new FileInputStream(keystoreFile),password); KeyPair keyPair=getPrivateKey(keystore,alias,password); PrivateKey privateKey=keyPair.getPrivate(); String encoded=encoder.encode(privateKey.getEncoded()); FileWriter fw=new FileWriter(exportedFile); fw.write(“—–BEGIN PRIVATE KEY—–/n“); fw.write(encoded); fw.write(“/n“); fw.write(“—–END PRIVATE KEY—–”); fw.close(); } public static void main(String args[]) throws Exception{ ExportPrivateKey export=new ExportPrivateKey(); export.keystoreFile=new File(args[0]); export.keyStoreType=args[1]; export.password=args[2].toCharArray(); export.alias=args[3]; export.exportedFile=new File(args[4]); export.export(); } }