Я создаю KeyPair с нижеуказанной спецификацией, используя Java (KeyPairGenerator)
- Формат открытого ключа OpenSSH
- Формат DER в кодировке Base64
- Формат файла открытого ключа SSH, как указано в RFC4716
Публичный сгенерированный является валидным, а закрытый ключ хранится в файле pem с использованием PKCS8Generator - недопустим. Когда я пытаюсь импортировать файл pem в puttygen, я получаю сообщение об ошибке «Не удалось загрузить закрытый ключ (нераспознанный тип данных)», Ниже приведен пример кода
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(2048, new SecureRandom());
KeyPair kp = kpg.generateKeyPair();
Key publicKey = kp.getPublic();
String publicKeyEncoded = "---- BEGIN SSH2 PUBLIC KEY ----" + "\n" +
new String(Base64.getEncoder().encode(publicKey.getEncoded())) + "\n"+
"---- END SSH2 PUBLIC KEY ----";
//Get Private Key and store to pem file.
Key privateKey = kp.getPrivate();
PKCS8Generator encryptorBuilder = new PKCS8Generator((PrivateKey) privateKey);
PEMWriter writer = new PEMWriter(new FileWriter(new File("D:/pk.pem")));
PemObject obj = encryptorBuilder.generate();
writer.writeObject(obj);
writer.flush();
writer.close();
Не могли бы вы помочь мне в этом. В
Ответы:
PuTTY не поддерживает формат PKCS # 8 - только «сырые» ключи PEM (PKCS # 1) и SSH.com «RFC4716-подобные» закрытые ключи. (Последние версии также поддерживают новый формат OpenSSH "bcrypt".)
Другими словами, файл должен иметь один из следующих заголовков:
PuTTY-User-Key-File-2: <key_type>
(PuTTY .ppk)-----BEGIN RSA PRIVATE KEY-----
-----BEGIN DSA PRIVATE KEY-----
-----BEGIN EC PRIVATE KEY-----
---- BEGIN SSH2 ENCRYPTED PRIVATE KEY ----
(SSH.com)-----BEGIN OPENSSH PRIVATE KEY-----
(OpenSSH)Смущает, что люди используют одно и то же расширение .pem для PKCS # 1 и PKCS # 8.
(Возможная причина отсутствия поддержки PuTTYgen в том, что ssh-keygen в OpenSSH всегда записывает PKCS # 1, поэтому до сих пор никто не нуждался в поддержке PKCS # 8.)
источник
ssh-keygen -p -f <private_key>
К сожалению, я не вижу способа сказать ansible для генерации ключей PKCS # 1 ...