Как использовать FTPSClient и ключи в формате PuTTY
Мне нужно подключиться к удаленному серверу через FTPS (неявное или явное). Я успешно подключился к серверу через FileZilla. Также я протестировал код для извлечения файла из общедоступного ftp: ftp.mozilla.org. Теперь мне нужен тот же код для ftps. У меня проблема с закрытым ключом и KeyStore
String keyPath = "src/test/resources/keys/thekey.ppk";
FTPSClient client = new FTPSClient();
FileOutputStream fos = null;
try {
KeyStore ks = KeyStore.getInstance("JKS"); //
FileInputStream fis = new FileInputStream(keyPath);
ks.load(fis, "".toCharArray());//java.io.IOException: Invalid keystore format
fis.close();
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory
.getDefaultAlgorithm());
kmf.init(ks, "".toCharArray());
System.out.println("connecting to 1.1.1.1...");
client.setDefaultTimeout(10000);
client.connect("1.1.1.1", 2190);
System.out.println("loggin in...");
System.out.println("login: " + client.login("login", "pass"));
String remoteDir = "/pub/downloaded/";
String remoteFileName = "testMsg.txt";
String localFileName = "testMsg.local.txt";
fos = new FileOutputStream(localFileName);
System.out.println("retrieving file...");
boolean isRetrieved = client.retrieveFile(remoteDir + remoteFileName, fos);
System.out.print("File: " + remoteDir + remoteFileName + "; IsRetrieved: " + isRetrieved + "\n");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
Ключи были сгенерированы в формате PuTTY. Какие еще варианты я могу поставить здесь KeyStore.getInstance("JKS"). Если пропустить часть с KeyStore, то код достигает строки с client.retrieveFile и приостанавливается на долгое время. Нужна помощь по импорту ключей, плз.
1 ответ
FTPS расшифровывается как FTP-over-SSL. SSL использует сертификаты X.509 для аутентификации (в настоящее время мы опускаем другие редко используемые методы). Putty является SSH/SFTP-клиентом (где SFTP означает SSH File Transfer Protocol), а putty-ключи являются SSH-ключами. Следовательно, вы не можете использовать ключи SSH для аутентификации SSL.