.net - 尝试使用 FtpWebRequest 连接到 FTP 服务器时出错
问题描述
我正在尝试使用 System.Net.FtpWebResponse 连接到 FTP 服务器,但我遇到了 TLS 问题;
如果我使用此配置:
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls13;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
我收到此错误:
"Authentication failed because the remote party has closed the transport stream."
对于 SecurityProtocolType (Tls12, Tls11, Tls) 的任何其他值,我收到此错误:
"error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol"
什么是正确的配置?
---------更新我不知道它是否有任何相关性,但我尝试了一个工具来检查 ftp 服务器,我得到了这个;我真的不知道这意味着什么
通过套接字测试协议,除了 NPN+ALPN
未提供 SSLv2 (OK) 未提供 SSLv3 (OK) 未提供 TLS 1 未提供 TLS 1.1 未提供 TLS 1.2 未提供 未提供 TLS 1.3
您不应该继续,因为没有检测到协议。如果您仍然真的很想,请说“是”-> 是 NPN/SPDY 未提供 ALPN/HTTP2 http/1.1(已提供)
测试密码类别
未提供 NULL 密码(无加密)(OK) 未提供匿名 NULL 密码(无身份验证)(OK) 未提供导出密码(无 ADH+NULL)(OK) 低:64 位 + DES,RC[2,4 ](无导出)未提供(OK)三重 DES 密码/IDEA 未提供过时:SEED + 128+256 位 CBC 密码未提供强加密(AEAD 密码)未提供
测试健壮(完美)的前向保密,(P)FS - 省略 Null 身份验证/加密,3DES,RC4 密码映射不可用,回退到 openssl
本地问题:客户端只有 1 个 PFS 密码
测试服务器首选项
有服务器密码命令吗?否(不好)协商协议 TLSv1.2 协商密码 ECDHE-RSA-AES256-GCM-SHA384,256 位 ECDH (P-256)(客户端选择的有限意义)每个 proto 的协商密码(客户端选择的有限意义) (SSLv2:本地问题:/usr/bin/openssl 不支持“s_client -ssl2”) ECDHE-RSA-AES256-GCM-SHA384: TLSv1.2 由于顺序由客户端确定,因此未进行进一步的密码顺序检查
错误设置 TLSv1.3 密码套件 140630432556352:错误:1426E0B9:SSL 例程:ciphersuite_cb:没有密码匹配:../ssl/ssl_ciph.c:1294:
测试服务器默认值(Server Hello)
TLS 扩展(标准)“重新协商信息/#65281”“EC 点格式/#11”“应用层协议协商/#16”会话票证 RFC 5077 提示无——无生命周期广告 SSL 会话 ID 支持是会话恢复票证无, ID:是 TLS 时钟偏差 随机值,不可能进行指纹识别
客户端问题,不应发生:找到主机证书,但我们无法继续使用“服务器默认设置”。
测试 HTTP 头响应 @"/"
HTTP 状态代码 403 禁止 HTTP 时钟偏差 0 秒从本地时间开始严格传输安全未提供公钥固定——服务器横幅 Apache 应用程序横幅——Cookie(未在“/”处发布)——也许最好尝试 30 倍的目标 URL安全标头 -- 反向代理横幅 --
测试漏洞
Heartbleed (CVE-2014-0160) 不易受攻击 (OK),无心跳扩展 CCS (CVE-2014-0224) 不易受攻击 (OK) Ticketbleed (CVE-2016-9244),实验。不易受攻击(OK),没有会话票证扩展 ROBOT 错误设置 TLSv1.3 密码套件 140275162178880:error:1426E0B9:SSL 例程:ciphersuite_cb:no cipher match:../ssl/ssl_ciph.c:1294: Error setting TLSv1.3 ciphersuites 140324905874752 :error:1426E0B9:SSL routines:ciphersuite_cb:no cipher match:../ssl/ssl_ciph.c:1294: Error setting TLSv1.3 ciphersuites 139742720451904:error:1426E0B9:SSLroutines:ciphersuite_cb:no cipher match:../ssl /ssl_ciph.c:1294:设置 TLSv1.3 密码套件时出错 140133308515648:错误:1426E0B9:SSL 例程:ciphersuite_cb:没有密码匹配:../ssl/ssl_ciph.c:1294:设置 TLSv1 时出错。 https://censys.io/ipv4?q=EB4B836B43825246B82235A5E6851DEE642977E8714EA8C7D9F28BF907928B9C could help you to find out LOGJAM (CVE-2015-4000), experimental Error setting TLSv1.3 ciphersuites 140009947899200:error:1426E0B9:SSL routines:ciphersuite_cb:no cipher match: ../ssl/ssl_ciph.c:1294: 不易受攻击 (OK): 没有 DH EXPORT 密码,没有检测到 <= TLS 1.2 BEAST (CVE-2011-3389) 的 DH 密钥不易受攻击 (OK),没有 SSL3 或 TLS1 LUCKY13 (CVE-2013-0169),实验性错误设置 TLSv1.3 密码套件 140314971432256:错误:1426E0B9:SSL 例程:ciphersuite_cb:没有密码匹配:../ssl/ssl_ciph.c:1294:潜在漏洞,使用密码块链接(CBC ) 使用 TLS 加密。检查补丁 RC4 (CVE-2013-2566, CVE-2015-2808) 本地问题:/usr/bin/openssl 中没有配置 RC4 密码
针对服务器测试所有 1 个本地可用密码,按加密强度排序 密码映射不可用,回退到 openssl
十六进制密码套件名称 (IANA/RFC) KeyExch。加密位密码套件名称 (OpenSSL)
本地问题:在/home/user/etc/client-simulation.txt中找不到客户端模拟数据
解决方案
十六进制密码套件名称 (IANA/RFC) KeyExch。加密位密码套件名称 (OpenSSL)
如果您需要转换 IANA 名称、OpenSSL 名称或十六进制代码点:
有一种简单的方法可以使用 ruby 中的tls-map库将任何 OpenSSL(或 GnuTLS、NSS 等)密码名称转换为 IANA/标准/RFC 密码名称:
require 'tls_map'
tm = TLSmap::App.new
# OpenSSL -> IANA
tm.search(:openssl, 'AES128-SHA', :iana) #=> {:iana=>"TLS_RSA_WITH_AES_128_CBC_SHA"}
# Hexadecimal codepoint to all (including OpenSSL & IANA)
tm.search(:codepoint, '1303') #=> {:codepoint=>"1303", :iana=>"TLS_CHACHA20_POLY1305_SHA256", :openssl=>"TLS_CHACHA20_POLY1305_SHA256", :gnutls=>"CHACHA20_POLY1305_SHA256", :nss=>"TLS_CHACHA20_POLY1305_SHA256"}
它也可用作 CLI 工具:
$ tls-map search openssl AES128-SHA -o iana
iana: TLS_RSA_WITH_AES_128_CBC_SHA
推荐阅读
- python-3.x - python virtualenv导入失败
- pytorch - 自注意力术语中的温度是多少?
- uwp - 使用在 Windows Template Studio 中创建的 UWP 到 Uno 平台
- sql-server - SQL 函数 - 当子查询跟随 =、!=、<、<=、>、>= 或当子查询用作表达式时,这是不允许的
- android - 如何在 Jetpack Compose 中使用小部件?
- javascript - 如何屏蔽和取消屏蔽 HTML 标头文本
- twig - 在“for”上使用“if”条件
- google-sheets - 仅删除 Google 表格中的空白单元格(而不是行)
- navigation - Android 底部导航 - 从另一个导航图中调用操作
- c# - 如何在 C# 中使用 lambda 表达式来处理矩阵 LinkedList