我有一个用C#制作的Web服务。它使用其他Web服务,但始终使用SSL3或TLS1.0。
我已通过以下链接更改了注册表:https://www.derekseaman.com/2010/06/enable-tls-12-aes-256-and-sha-256-in.html#uds-search-results
如果在注册表上,我禁用TLS1.0,则尝试使用SSL3发出请求;如果我禁用SSL3,则不发出请求。如果我仅将TLS1.2密码放在gpedit上,它不会发出请求。我认为TLS1.2仅在回答请求时起作用,而在消耗时不起作用。
这是IIS使用的套件密码:
TLS 1.0:
密码套件:TLS_RSA_WITH_AES_128_CBC_SHA(0x002f)密码套件: TLS_RSA_WITH_AES_256_CBC_SHA(0x0035)密码套件: TLS_RSA_WITH_RC4_128_SHA(0x0005)密码套件: TLS_RSA_WITH_3DES_EDE_CBC_SHA(0x000a)密码套件: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA(0xc013)密码套件: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA(0xc014)密码套件: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA(0xc009)密码套件: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA(0xc00a)密码套件: TLS_DHE_DSS_WITH_AES_128_CBC_SHA(0x0032)密码套件: TLS_DHE_DSS_WITH_AES_256_CBC_SHA(0x0038)密码套件: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA(0x0013)密码套件: TLS_RSA_WITH_RC4_128_MD5(0x0004)
SSL3:
密码套件:TLS_RSA_WITH_RC4_128_SHA(0x0005)密码套件: TLS_RSA_WITH_3DES_EDE_CBC_SHA(0x000a)密码套件: TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA(0x0013)密码套件: TLS_RSA_WITH_RC4_128_MD5(0x0004)密码套件: TLS_EMPTY_RENEGOTIATION_INFO_SCSV(0x00ff)
如果我使用独立的c#应用程序,它将使用TLS1.2,但是当它由IIS管理时,则不会这样做。
我使用在.NET4.0上运行的.NET 3.5(在项目的属性上,我在Web.config上具有.NET 3.5,我具有)。这是因为我需要使用WSE3。 .Net的运行时为v4.0.30319
答案 0 :(得分:0)
要在旧版.NET上支持TLS 1.1 / 1.2作为客户端,您需要在ServicePointManager
上启用这些协议。
但是通常用于此目的的枚举没有必填字段,但是如果完全修补了安装,则基础值确实起作用。使用VB.Net(因为我要处理的是它的代码):
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls _
Or DirectCast(&H300, SecurityProtocolType) _
Or DirectCast(&HC00, SecurityProtocolType)