具有 ftp_connect 功能的 AUTH TLS/SSL

AUTH TLS/SSL with ftp_connect function

根据 RFC 2228AUTH 是一个 FTP 命令,可以与其中一种身份验证机制(TLSSSL)一起使用,为了确保数据通道和控制通道的安全。

我想知道我是否可以将此命令与具有 ftp_connect 功能的非安全连接(常规 FTP)一起使用,如下所示:

$conn = ftp_connect('hostname');

if (is_ressoure($conn)) {
    $command = ftp_raw($conn, 'AUTH TLS');
    $responseCode = (int) substr($command[0], 0, 3);

    if ($responseCode === 234) {
        // AUTH TLS success
        login(); // secured

    } else { // if TLS rejected try SSL

        $command = ftp_raw($conn, 'AUTH SSL');
        $responseCode = (int) substr($command[0], 0, 3);

        if ($responseCode === 234) {
            // SSL authentication success
            login(); // secured

        } else {
            // Cannot secure the data channel and command channel
            die();
        }
    }
}

我知道 AUTH 命令与 ftp_ssl_connect 的显式 FTP/SSL 连接一起使用,我很困惑,我想知道这个命令是否对常规 FTP连接?

提前致谢!

AUTH TLS/SSL 将连接加密。如果您将它与普通 ftp_connect 连接一起使用,连接将停止工作。服务器将期望加密命令(并将发送加密响应),客户端(PHP FTP 模块)将继续发送未加密命令(并将期望未加密响应)。他们不会互相理解。实际上它甚至永远不会达到那个目的,因为在响应 AUTH 之后,服务器将启动 TLS 握手并且会立即失败。