AWS需要TLS 1.2,但ASP.NET使用TLS 1.0或1.1发出请求[重复]

afdcj2ne  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(207)

此问题在此处已有答案

Update .NET web service to use TLS 1.2(8个答案)
上个月关门了。
我的c# .NET代码已经编译并针对.NET 4.8。我的Windows .NET Web服务器运行.NET 4.8,但我在调用AWS的API时继续收到来自AWS的消息,说操作是非法的,我需要将我的TLS调用更新为1.2。下面是我收到的确切错误消息。
“拒绝访问”,错误消息“呼叫者未被授权通过TLS 1.0/1.1调用此服务。"。
报告的用户代理是:
“aws-sdk-dotnet-45/3.7.301.2 aws-sdk-dotnet-core/3.7.300.9 .NET_SDK/4.0 .NET_Framework/4.0 OS/Microsoft_Windows_NT_10.0.17763.0 ClientSync”
我不确定这是否是.NET 4.8的正确用户代理,它肯定看起来不是这样,这让我问,为什么我的代码运行在.NET 4.0而不是.NET 4.8下?
我已经通过推荐的编辑注册表来配置我的.NET环境默认为TLS 1.2,它不工作。

plicqrtu

plicqrtu1#

看起来你有一个旧的代码运行,而不是你可能认为的.NET 4.8。
根据版本组合,TLS版本选择会发生变化。
对于较新的.NET版本,它依赖于操作系统来做决定,并且大多数情况下都是有效的。但是较旧的版本(就像我假设你有的那个)确实选择了TLS,并且总是选择旧的TLS版本。
本页说明如何设置操作系统注册表以确保使用TLS 1.2:
https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls#systemdefaulttlsversions
您可以将其保存为.reg文件,并在计算机上运行(作为管理员)以自动设置它:

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

字符串
来源:相同的链接,只是为了方便复制到这里。

相关问题