首页 > 解决方案 > 尝试使用 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中找不到客户端模拟数据

标签: .netsslftp

解决方案


十六进制密码套件名称 (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

推荐阅读