是否可以使用 VB.Net 4.8 FtpWebRequest 将文件上传到使用仅服务器端证书的 tls 1.3 的服务器?

问题描述

我在将文件上传到 ftp 服务器时遇到问题。我从服务器收到错误 426。经过进一步研究,我发现了错误 426 的解释

错误 426: 连接关闭;传输中止。 ... 该命令打开数据连接以执行操作,但该操作被取消,数据连接关闭。尝试重新登录;联系您的托管服务提供商以检查您是否需要增加您的托管帐户;尝试禁用 PC 上的防火墙,看看是否能解决问题。如果没有,请联系您的托管服务提供商或 ISP。 )

我还了解到错误 426 通常与​​旧客户端和新服务器之间的兼容性问题有关。 “需要升级”是我发现与该问题相关的另一个术语。我在帖子底部包含了来自 vsftpd 的日志文件。日志显示从 FileZilla 成功传输和从 Visual Studio 程序传输失败。我注意到 FileZilla 使用 tls 1.3,visual studios webrequest 使用 tls 1.2。

我有几个问题

将 VSFTPD 服务器设置为与 Visual Studio 交互或以与服务器一起工作的方式配置 Visual Studio 是否更实用?后者是我对问题的首选解决方案。

是否可以升级 FtpWebRequest 以处理 tls v 1.3?这将如何实现?

````

    
    Private Sub BackgroundWorker_DoWork(sender As Object,e As System.ComponentModel.DoWorkEventArgs)

    
    Try

        ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ServerCertificateValidationCallback)

        Dim request As FtpWebRequest = DirectCast(WebRequest.Create("ftp://xxx.xxx.xxx.xxx/uploads/test.text"),FtpWebRequest)

        request.Credentials = New NetworkCredential("alphaftp","xxxxxxxxx")
        request.EnableSsl = True
        request.UsePassive = True
        request.Method = WebRequestMethods.Ftp.UploadFile
        request.GetResponse()

        Dim FileBytesBuffer() As Byte = File.ReadAllBytes("C:\Test.txt")

        Dim ByteStream As Stream = request.GetRequestStream()

        For i As Integer = 0 To FileBytesBuffer.Length Step 1024
            worker.ReportProgress(i)
            Dim chunksize As Integer = FileBytesBuffer.Length - i
            If chunksize > 1024 Then chunksize = 1024
            ByteStream.Write(FileBytesBuffer,i,chunksize)
        Next

        ByteStream.Close()
        ByteStream.dispose()

    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try

End Sub   
    

````

使用 ssl 调试从 FileZilla 成功上传

2021 年 3 月 15 日星期一 12:55:48 [pid 135809] 连接:客户端“::ffff:xxx.xxx.xxx.xxx”

Mon Mar 15 12:55:49 2021 [pid 135809] DEBUG: Client "::ffff:xxx.xxx.xxx.xxx","SSL version: TLSv1.3,SSL cipher: TLS_AES_256_GCM_SHA384,not used,no证书"

Mon Mar 15 12:55:49 2021 [pid 135808] [alphaftp] OK LOGIN: Client "::ffff:xxx.xxx.xxx.xxx"

Mon Mar 15 12:55:51 2021 [pid 135809] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 版本:TLSv1.3,SSL 密码:TLS_AES_256_GCM_SHA384,重用,没有证书"

Mon Mar 15 12:55:51 2021 [pid 135809] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:SSL_RECEIVED_SHUTDOWN”

Mon Mar 15 12:55:51 2021 [pid 135809] [alphaftp] 调试:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:3”

Mon Mar 15 12:55:51 2021 [pid 135812] [alphaftp] OK 上传:客户端“::ffff:xxx.xxx.xxx.xxx”,“/uploads/Linux Cheat Sheet.txt”,983 字节,1.34Kbyte/秒

Mon Mar 15 12:55:52 2021 [pid 135809] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 版本:TLSv1.3,SSL 密码:TLS_AES_256_GCM_SHA384,重用,没有证书"

Mon Mar 15 12:55:52 2021 [pid 135809] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:NONE”

Mon Mar 15 12:55:52 2021 [pid 135809] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:SSL_SENT_SHUTDOWN”

Mon Mar 15 12:55:52 2021 [pid 135809] [alphaftp] 调试:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:3”

"/var/log/vsftpd.log" 174L,19660C

尝试上传 Visual Studio .net 4.8 失败

2021 年 3 月 15 日星期一 15:39:31 [pid 137652] 连接:客户端“::ffff:xxx.xxx.xxx.xxx”

Mon Mar 15 15:39:31 2021 [pid 137652] 调试:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 版本:TLSv1.2,SSL 密码:ECDHE-RSA-AES256- GCM-SHA384,未重用,无证书"

Mon Mar 15 15:39:32 2021 [pid 137651] [alphaftp] OK LOGIN: Client "::ffff:xxx.xxx.xxx.xxx"

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] 调试:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 版本:TLSv1.2,SSL 密码:ECDHE-RSA -AES256-GCM-SHA384,重用,无证书"

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] DEBUG: Client "::ffff:xxx.xxx.xxx.xxx","DATA 连接在没有关闭 SSL 的情况下终止。错误的客户端!上传的完整性不能断言。”

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] DEBUG: Client "::ffff:xxx.xxx.xxx.xxx","SSL shutdown state is: NONE"

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:SSL_SENT_SHUTDOWN”

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:SSL_SENT_SHUTDOWN”

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“SSL 关闭状态为:SSL_SENT_SHUTDOWN”

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] DEBUG: Client "::ffff:xxx.xxx.xxx.xxx","SSL ret: 18446744073709551615,SSL error: error:00000000:lib (0):func(0):reason(0),errno: 0"Mon Mar 15 15:39:33 2021 [pid 137653] [alphaftp] 失败上传:客户端 "::ffff:174.204.199.160","/上传/test.text",0.00Kbyte/sec

Mon Mar 15 15:39:33 2021 [pid 137652] [alphaftp] DEBUG:客户端“::ffff:xxx.xxx.xxx.xxx”,“控制连接在没有关闭 SSL 的情况下终止。”

"/var/log/vsftpd.log" [只读]​​ 242L,28422C

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)