¿Cómo puedo exportar una clave privada (PKCS # 8) en formato legible Putty o Puttygen?

Estoy escribiendo una herramienta para crear nuevos servidores de Amazon Web Services, utilizando la API Java de AWS. Cuando crea un servidor, debe especificar qué par de claves SSH usar fuera de las claves públicas que AWS ha almacenado en su cuenta. Puede generar el par de claves usted mismo e importar la clave pública, o puede hacer que AWS genere el par de claves y descargue la clave privada.

Estoy tratando de generar el par de claves yo mismo, importar la clave pública en AWS, iniciar el nuevo servidor utilizando la entrada de par de claves recién registrada y guardar la clave privada localmente. Luego quiero usar Putty para ssh en mi nuevo servidor, usando la clave privada, posiblemente pasando primero por Puttygen para convertirlo.

Hasta ahora, he llegado a generar mi par de claves, importando con éxito la clave pública en AWS e iniciando un nuevo servidor. Sin embargo, parece que no puedo exportar la clave privada en ningún formato que Putty o Puttygen acepten.

Aquí está mi código para generar el par de claves y guardar la clave privada:

SecureRandom random = SecureRandom.getInstance("SHA1PRNG", "SUN");
random.nextBytes(new byte[]{}); //toss out the first result to ensure it seeds randomly from the system.

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(KEY_LENGTH, random);
KeyPair keyPair = keyGen.genKeyPair();

BASE64Encoder encoder = new BASE64Encoder();

FileOutputStream out =  null;
File keyPath = new File(_keyStorageDir, "private.pem");
try
{
    out = new FileOutputStream(keyPath);
    out.write(encoder.encode(keyPair.getPrivate().getEncoded()).getBytes());
}
finally
{
    if(out != null)
        out.close();
}

Sin embargo, cuando intento importar la clave en PuttyGen, aparece "No se pudo cargar la clave (no una clave privada)". Si intento agregar ----- BEGIN PRIVATE KEY ----- y su pie de página correspondiente obtengo "No se pudo cargar la clave privada (tipo de clave no reconocida). Si intento RSA PRIVATE KEY obtengo" No se pudo cargar privado clave (error de decodificación ASN.1) ".

VocaciónkeyPair.getPrivate().getFormat() produce "PKCS # 8". Si bien he encontrado referencias para convertir de ese formato a formato pem usando las herramientas OpenSSL, no he encontrado nada sobre cómo hacerlo yo mismo en Java.

¿Cómo puedo exportar la clave en formato pem para que Puttygen pueda leerla?

Respuestas a la pregunta(2)

Su respuesta a la pregunta