- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我编写 FTPS 服务器,在 AUTH TLS 命令后我的 ssl 连接出现问题。简单示例:
try
{
int ServerPort = 21;
ServerSocket FtpExServer = new ServerSocket(ServerPort);
while(true)
{
Socket S = FtpExServer.accept();
InputStreamReader ISR = new InputStreamReader(S.getInputStream());
OutputStreamWriter OSW = new OutputStreamWriter(S.getOutputStream());
BufferedReader ClientSocketReader = new BufferedReader(ISR);
PrintWriter ClientSocketWriter = new PrintWriter(OSW, true);
ClientSocketWriter.println("220 Welcome to FTP server.");
print(ClientSocketReader.readLine());
ClientSocketWriter.println("234 AUTH TLS successful");
char[] passphrase = "pass".toCharArray();
char[] cpassphrase = "cpass".toCharArray();
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream("keystore.jks"), passphrase);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(keystore, cpassphrase);
SSLContext context = SSLContext.getInstance("TLS");
KeyManager[] keyManagers = kmf.getKeyManagers();
context.init(keyManagers, null, null);
SSLServerSocketFactory ssf = context.getServerSocketFactory();
SSLServerSocket ss = (SSLServerSocket) ssf.createServerSocket(990);
ss.setSoTimeout(2000);
SSLSocket s = (SSLSocket)ss.accept();
ISR = new InputStreamReader(s.getInputStream());
OSW = new OutputStreamWriter(s.getOutputStream());
ClientSocketReader = new BufferedReader(ISR);
ClientSocketWriter = new PrintWriter(OSW, true);
ClientSocketWriter.println("234 AUTH TLS successful");
print(ClientSocketReader.readLine());
ClientSocketWriter.println("331 Password required for smie");
print(ClientSocketReader.readLine());
ClientSocketWriter.println("230 User smie logged in");
print(ClientSocketReader.readLine());
ClientSocketWriter.println("215 UNIX Type: L8");
print(ClientSocketReader.readLine());
ClientSocketWriter.println("550 Command not suported.");
}
}
catch(Exception e)
{
print(e);
}
描述:FTP 客户端(例如 MoveITFreely)连接到端口 21 上的服务器。发送命令“AUTH TLS”后,服务器发送“234 AUTH TLS 成功”。现在客户端必须连接到端口 990(?) 上的服务器,但客户端不连接并出现超时异常。
我做错了什么?
最佳答案
有两种方法可以将 SSL 添加到 FTP。
第一种方法称为隐式 SSL。表示服务器监听990端口,当客户端连接时,首先进行SSL/TLS协商,然后将建立的连接作为命令 channel 进行通信(对于数据通道,SSL握手也在a中进行)类似的方式)。
第二种方法是您尝试使用的方法。它称为显式 SSL。客户端连接到端口 21,发送 AUTH TLS 并在现有连接上启动 SSL 协商。数据通道可以安全或不安全,具体取决于您的需要(您使用 PROT 命令指定)。
你混合了这些方法。我建议你阅读 detailed explanation in Wikipedia在进一步之前。然后阅读 RFC for explicit TLS .
更新:您还需要 SSLClientSocket,而不是 SSLServerSocket。
关于java - 连接到 FTPS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6854975/
配置 我正在使用来自 apache commons net 3.0.1 的 FtpsClient 与来自 apache ftpserver 1.0.6 的 FtpServer 对话。 客户端和服务器使
我正在运行 Ubuntu 12.10,并且使用 Yahoo Webhosting,并且我还有自己的域“example.com”。我曾经使用 FTP 将文件传输到我的虚拟主机帐户或从我的虚拟主机帐户传输
我在将文件从 Unix/Mac/Linux 环境传输到 Windows FTP 服务器时遇到问题。 而完全相同的 Java 代码可以在 Windows PC 上运行。 来自 *Nix/Mac 的传输仅
我正在使用ftps模块,并且我已经在 Cygwin 上安装了 lftp。我遇到了麻烦,因为我的 Node js 应用程序看起来连接正常,但我的命令都没有运行。该模块的文档不是很详细,所以我只是尽我所能
我们遇到的最初问题是,由于服务器证书不受信任,常规 FTP 下载开始失败。这促使我们想知道证书是否已在对方通知我们的情况下进行了更新,因此我们想下载当前证书并将其与我们 keystore 中的证书进行
仍然没有答案。感谢您提供任何帮助! 我正在使用 Apache Commons-Net3.1 并尝试让 FTPS 正常工作。当我尝试连接时,我在控制台中收到以下错误: ---编辑:代码和错误已更新---
我不知道如何在 iPhone 上制作 FTPS(FTP over SSL)。我想使用下面的代码 ftpStream = CFWriteStreamCreateWithFTPURL(NULL, (CFU
是否有可能通过具有身份验证的代理建立 FTPS 服务器连接? 为了使用代理身份验证连接到普通的 FTP 服务器,我使用了 Apache Commons 的 FTPHTTPClient。但是,我找不到在
我必须使用 SSL 与 FTP 服务器通信。 我收到了一个关于如何使用 WinScp 命令的示例: open ftpes://SomeUser:SomePass@SomeDomain.com/ -ce
我正在尝试使用 ssh/tls 连接到 ftp 服务器,但我使用的每种方法都没有帮助。 FTPSClient ftpsClient = new FTPSClient("TLS", false)
我需要 下载文件结构 (超过 4GB)来自 FTPS 服务器 (基于 TLS 协议(protocol)的隐式 FTP)。不幸的是 wget不支持 FTPS,但是 curl does .然而curl不支
我正在从事应用程序开发工作。在该应用程序上,我正在执行文件存储、检索和删除操作。为了识别服务器上的文件,我使用索引( HashMap 文件)文件。每次执行上传操作时,我都会更新“index”文件并将“
我正在尝试使用此代码将文件上传到 FTP,我遇到的问题是当语法遇到 serverURI.Scheme != Uri.UriSchemeFtp 时它返回 false。这是否意味着我的 URI 地址设置不
我能够通过 FTP 连接到 Apache FTP 服务器 ( http://mina.apache.org/ftpserver-project/index.html )。我按照同样的方式建立FTPS连
我需要将 SUSE Linux Enterprise 12 中的文件上传到仅允许隐式 FTPS 的 FTP 服务器(实际上传需要从 PHP 触发,但我可以运行任意 shell 命令)。默认情况下,防火
我的应用程序需要在上传后更改远程文件权限(STOR)。为此,它使用 ftps 连接。 与 chmod 命令类似,正确的命令是什么? 我搜索了FTP Commands and Extensions我没有
我正在尝试将文件上传到 FTP 服务器 (FTPS)。运行以下代码会产生异常: The remote certificate is invalid according to the validatio
有人要求我使用客户端身份验证证书设置 FTPS 连接。我是客户端,连接到服务器。我在 Windows7 工作站上,在防火墙后面。一些其他信息: 仅限 TLS 1.2 仅被动模式 我的 WAN IP 已
我目前正在尝试使用 PHP 在我们的服务器和远程 FTPS(FTP over SSL)服务器之间传输小文件。我是完成这项工作的标准公平,即 file_put_contents、file_get_con
我有一个场景,我需要将文件上传到远程 FTP 服务器。我尝试上传此文件的机器位于 AWS-VPC 内和 SOCKS 服务器后面,现在我正在使用以下命令来执行此操作 curl --connect-ti
我是一名优秀的程序员,十分优秀!