【问题标题】:AUTH TLS/SSL with ftp_connect function使用 ftp_connect 功能验证 TLS/SSL
【发布时间】:2020-05-06 02:43:54
【问题描述】:

根据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 连接是否无用?

提前致谢!

【问题讨论】:

    标签: php ssl ftp ftps


    【解决方案1】:

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

    【讨论】:

    • 其实在普通模式下发送AUTH命令时,服务器响应成功响应码,连接并没有停止,请给我解释一下为什么?
    • 没错。对AUTH 的响应是最后一次纯文本通信。但是任何进一步的通信都应该失败。
    猜你喜欢
    • 1970-01-01
    • 2015-05-19
    • 2014-02-14
    • 1970-01-01
    • 2022-08-23
    • 2018-01-07
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    相关资源
    最近更新 更多