AWS SDK 3.x for .NET Framework 4.0 可行性测试

这篇具有很好参考价值的文章主要介绍了AWS SDK 3.x for .NET Framework 4.0 可行性测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

为了应对日益增长的网络安全挑战, 越来越多的互联网厂商已经陆续开始或者已经彻底停止了对 SSL 3 / TLS 1.0 / TLS1.1 等上古加密算法的支持. 而对于一些同样拥有悠久历史的和 AWS 服务相关联的应用程序, 是否可以通过仅更新 SDK 版本的方式来适应新的环境. 本文将以 Windows Server 2008 R2 + .NET Framework 4.0 作为基础环境, 使用 VB.NET 和最新版本 AWS SDK 尝试开发一个能够访问 S3 存储桶的 WinForm 应用进行可行性测试.

环境准备

在本地使用 VMware/VirtualBox 安装一台 Windows Server 2008 R2 虚拟机并安装 Visual Studio 2010 开发环境.
相关 ISO 镜像下载链接:

filename: cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso
md5: 38992812F82E594644B2D64CCD86F89C
ed2k://|file|cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.iso|3368962048|7C210CAC37A05F459758BCC1F4478F9E|/

filename: cn_visual_studio_2010_ultimate_x86_dvd_532347.iso
md5: A94B54AA4A79E4F767DE116B1B77473D
ed2k://|file|cn_visual_studio_2010_ultimate_x86_dvd_532347.iso|2685982720|4AE6228933DDE49D9BFA4C3467C831C2|/

踩坑过程

由于 Visual Studio 2010 还未内置 NuGet 包管理工具, 首先需要手动下载安装 NuGet Package Manager

启动 Visual Studio 2010, 创建 .NET Framework 4 Windows 窗体应用程序项目
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
从工具箱中拖拽设计一个简单的窗体: 一个用来触发操作的按钮和 TextBox1 用来作为测试结果的输出
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
Ctrl+Shift+S 保存项目, 工具 > NuGet 程序包管理器 > 管理解决方案的 NuGet 程序包
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
展开左侧 联机 - nuget.org 检查可用程序包, 结果直接报错了, 看起来可能在这一步就开始遇到了通信问题
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
先忽视这个问题, 手动从网站下载包文件离线方式安装吧. 分别下载 AWSSDK.S3 和 AWSSDK.Core
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
将下载好的两个 .nupkg 文件放到一个文件夹中
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
回到 VS2010 打开 NuGet 程序包管理设置
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
在程序包源中添加指向上面存放 .nupkg 的文件夹, 添加后记得点 更新 按钮. 同时取消勾选默认的 nuget.org 的源
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
再次管理解决方案的 NuGet 程序包, 直接安装 AWSSDK - S3
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
期间会自动解决依赖关系把 AWSSDK - Core Runtime 也给装上
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
终于可以开始进入撸代码的环节了, 双击窗体设计器中的按钮打开代码视图, 完成后的 Form1.vb 代码如下:

Imports Amazon
Imports Amazon.S3
Imports Amazon.S3.Model

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim accessKey As String = "YourAccessKey"
        Dim secretKey As String = "YourSecretKey"
        Dim bucketName As String = "YourBucketName"

        Dim awsCredentials As New Amazon.Runtime.BasicAWSCredentials(accessKey, secretKey)
        Dim s3Client As New AmazonS3Client(awsCredentials, RegionEndpoint.CNNorthWest1)

        Dim listObjectsRequest As New ListObjectsRequest()
        listObjectsRequest.BucketName = bucketName

        Try
            Dim response As ListObjectsResponse = s3Client.ListObjects(listObjectsRequest)
            TextBox1.AppendText("Listing S3 Bucket's objects:" + vbCrLf)
            For Each obj In response.S3Objects
                TextBox1.AppendText(obj.Key + vbCrLf)
            Next
        Catch ex As AmazonS3Exception
            TextBox1.Text = ex.Message
        End Try
    End Sub
End Class

F5 启动调试, 点击 TEST 按钮, 程序卡顿一下后出现 TLS 的报错信息:

Amazon S3 will stop supporting TLS 1.0 and TLS 1.1 connections. Please update your client to use TLS version 1.2 or above. To learn more and to update your client, see https://go.aws/3AUlVSb. For further assistance, contact AWS support.
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算

填坑过程

好吧, 还好本来就有思想准备, 毫不意外的坑在了 TLS 的版本问题上, 开始尝试填坑. 看起来 .NET Framework 4.0 跑的应用默认并没有走 TLS 1.2 通信. 关于 Windows Server 2008 R2 和 .NET Framework 4.0 开启 TLS 1.2 的文档很多, 基本上都是要安装补丁或者修改注册表什么的, 尝试手动下载和折腾了半天都不好使. 意外发现网上有大神整理好的 Windows 7 / Server 2008 R2 的累积更新包 UpdatePack7R2-23.8.10 还挺新鲜的, 装了半天并重启了几次才算完全安装完成.

安装前请务必确认 C 盘的可用空间至少有 10 GB 以上

装完累积更新包后再检查 Windows 更新居然还能正常检查到有新的可用更新, 果断继续更新, 又是漫长的等待…
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
更新全部都装完以后, 再次测试还是相同的错误. 为了验证通信到底走的是啥版本的 TLS, 用 WireShark 抓个包瞅瞅.

AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
果然还是走了 TLSv1, 不过继续抓包用 IE 访问 https://www.qq.com 发现 Windows 系统现在已经是能够支持 TLSv1.2 的

AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
参考文档 SecurityProtocolType Enum 可以确认是 .NET Framework 4.0 只支持 SSL 3.0 和 TLS 1.0

仍不死心, 由于 Windows 中可以共存多个版本的 .NET Framework, 死马当成活马医, 再下个 4.5.2 的版本 Microsoft .NET Framework 4.5.2 (Offline Installer) 装上之后, 再运行调试, 奇迹发生!

AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
程序可以正常执行了, 再次启用 NuGet 线上的源, 也可以正常使用了.

AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算

总结

在 Windows Server 2008 R2 + .NET Framework 4.0 (Only) 的环境中, 由于 .NET Framework 4.0 先天不足无法支持 TLS 1.2 所以即便是 Windows 安装更新可以在系统层面(IE)支持 TLS 1.2, 使用 .NET Framework 4.0 开发的应用也无法正常通过 TLS 1.2 进行通信. 额外安装 .NET Framework 4.5.2 与 4.0 形成共存状态后, 之前基于 4.0 开发的应用就可以正常使用 TLS 1.2 通信了.

总的来说, 其实主要需要做的就两件事情:

  1. 把 Windows Server 2008 R2 能更的新都更一遍
  2. 额外安装 .NET Framework 4.5.2 与 4.0 共存, 弥补 4.0 的先天缺陷

附录

SSL / TLS 的历史版本发布时间:
AWS SDK 3.x for .NET Framework 4.0 可行性测试,AWS,vb.net,aws,.net,云计算
RFC 7568 相关描述 1

The Secure Sockets Layer version 3.0 (SSLv3), as specified in RFC 6101, is not sufficiently secure. This document requires that SSLv3 not be used. The replacement versions, in particular, Transport Layer Security (TLS) 1.2 (RFC 5246), are considerably more secure and capable protocols.

AWS 于 2023.6.28 将会把 TLS 1.2 作为调用 API 时的最低版本要求 2

June 1, 2023: This blog post has been updated to add a timeline to clarify the key dates. To avoid a disruption to your AWS workloads, you must update all of your TLS 1.0/ 1.1 software clients no later than 06/28/23.

Microsoft 也在 2023.8.1 的博客中宣布 Windows 即将默认禁用 TLS 1.0 / 1.1 3

Transport Layer Security (TLS) is the most common internet protocol for setting up an encrypted channel of communication between a client and server. TLS 1.0 dates back to 1999 and, over time, several security weaknesses have been found in this protocol version. TLS 1.1 was published in 2006 and made some security improvements, but never saw broad adoption. These versions have long been surpassed by TLS 1.2 and TLS 1.3, and TLS implementations try to negotiate connections using the highest protocol version available.


  1. RFC 7568 ↩︎

  2. TLS 1.2 to become the minimum TLS protocol level for all AWS API endpoints ↩︎

  3. TLS 1.0 and TLS 1.1 soon to be disabled in Windows ↩︎文章来源地址https://www.toymoban.com/news/detail-667554.html

到了这里,关于AWS SDK 3.x for .NET Framework 4.0 可行性测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 斯坦福| ChatGPT用于生成式搜索引擎的可行性

    文|智商掉了一地 随着 ChatGPT 在文本生成领域迈出了重要一步,Bing 浏览器也接入了聊天机器人功能,因此如何保证 Bing Chat 等搜索引擎结果的精确率和真实性也成为了搜索领域的热门话题之一。 当我们使用搜索引擎时,往往希望搜索结果能够真实准确地反映我们的需求。然

    2024年02月06日
    浏览(29)
  • 企业开展开源安全治理必要性及可行性详细分析,疯狂涨知识

    面对以上五个严重的挑战,从企业解决的角度来说,可以聚焦为三个主要应对举措: 多做行业头部最佳实践调研:其实近两年,互联网、金融、运营商、智能制造等多个行业的头部企业,还是有不少企业在开源安全治理方面已经有自己的一些最佳实践和成功经验了。虽然说不

    2024年04月11日
    浏览(32)
  • web端实现rtsp实时推流视频播放可行性方案分析

    1.1 什么是WebRTC 百度概念 :WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装

    2024年02月16日
    浏览(24)
  • 机械设计制造及其自动化专业向PLC方向发展的可行性

    我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6

    2024年02月16日
    浏览(41)
  • 涌现出来的模拟能力#OpenAI视频生成大模型构建世界模拟器的可行性

    Q:Sora出来后,普通人应该怎么办?  \\\"Sora的到来带来了机遇和挑战。普通人关注创意和技术,探索表达想法的新方式。🌟🔬他们制作高质量视频,平衡工作与生活,并拥抱行业变革。梦想成为现实。💡🎥👥#SoraRevolution\\\" 今天一早被OpenAI的视频生成刷屏了。社交媒体上,开

    2024年02月19日
    浏览(41)
  • 基于微信小程序家电电器商城系统设计与实现(PHP后台)可行性分析

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月19日
    浏览(30)
  • 基于Java+SpringBoot+Vue前后端分离鲜花购物商城系统设计和实现 可行性分析

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年02月19日
    浏览(40)
  • stm32f103使用DM542控制42相步进电机的原理和可行性分析

    步进电机是一种能够实现准确位置控制的电机,通常应用于需要高精度定位的场合,例如3D打印机、机器人和自动化系统等。而STM32F103是一种高性能、低功耗的微控制器,它拥有广泛的外设,适合用于控制各种电机。本文将介绍使用STM32F103控制DM542驱动器驱动42相步进电机的原

    2024年02月15日
    浏览(31)
  • 基于Java+SpringBoot+Vue.js前后端分离箱包购物商城系统设计和实现 可行性分析

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月22日
    浏览(36)
  • 基于Java+SpringBoot+Vue.js前后端分离零食购物商城系统设计和实现 可行性分析

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩。 项目配有对应开发文档、

    2024年02月20日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包