KB5028608 .NET Framework运行时导入 X.509 证书的方式发生变化

注意

发布日期:
2022 年 6 月 22 日

[2023/07/04] 已修订以包括缺少的 Windows 10 版本 1607 和 1507 版本

[2023/07/24] 已修订以添加 2023 年 7 月 11 日安全和质量汇总解决方案的发布详细信息

摘要

本文提供的帮助有助于缓解以下问题:安装 2023 年 6 月 13 日的 .NET Framework 和 .NET 更新后,用户可能会遇到 .NET Framework 运行时如何导入 X.509 证书的问题。

问题

使用 X509CertificateX509Certificate2X509Certificate2Collection 类导入包含私钥的 PKCS#12 blob 时,调用应用程序可能会观察到以下异常。

  • System.Security.Cryptography.CryptographicException: 未提供密码的 PKCS12 (PFX) 已超出允许的最大迭代次数。 有关详细信息,请参阅 https://go.microsoft.com/fwlink/?linkid=2233907。

此故障会影响在没有密码的情况下导出 [例如,通过 X509Certificate.Export(X509ContentType.Pfx)] 的 PKCS#12 blob。 故障可能不确定地发生。

解决方法

Microsoft 已发布 .NET Framework 和 .NET 的更新安装程序来解决此问题。 无论计算机是否已应用原始 2023 年 6 月 13 日、.NET Framework 和 .NET 安全更新,这些安装程序都可以应用于受影响的计算机。

重要

  • 如果以前使用了 KB5025823 .NET 应用程序导入 X.509 证书的方式的更改 中记录的注册表开关来解决此问题,请在安装新修补程序之前删除这些注册表开关。 从提升的命令提示符运行以下两个命令以删除注册表开关。
  • reg delete "HKLM\Software\Microsoft\.NETFramework" /v Pkcs12UnspecifiedPasswordIterationLimit /reg:32
  • reg delete "HKLM\Software\Microsoft\.NETFramework" /v Pkcs12UnspecifiedPasswordIterationLimit /reg:64

解决方案

此问题已在 2023 年 6 月 22 日发布的带外更新中得到解决,适用于 .NET Framework 4.6.2 及受此问题影响的 Windows 和 Windows Server 版本的较新版本。 若要获取这些带外更新的独立包,请在 Microsoft 更新目录中搜索 KB 编号。 可以手动将这些更新导入到 Windows Server Update Services (WSUS) 和 Microsoft Endpoint Configuration Manager。 有关 WSUS 说明,请参阅 WSUS 和目录站点。 有关配置管理器说明,请参阅 从 Microsoft 更新目录导入更新

如果对此问题使用了任何解决方法或缓解措施,则你不再需要它们,建议将它们删除。 要删除解决方法,请查看已针对说明应用的解决方法或备用解决方法。

产品版本 更新 知识库文章
Windows 11 版本 22H2
.NET Framework 4.8.1 目录 5028576
Windows 11 版本 21H2
.NET Framework 4.8 目录 5028582
.NET Framework 4.8.1 目录 5028575
Windows Server 2022
.NET Framework 4.8 目录 5028584
.NET Framework 4.8.1 目录 5028578
Azure Stack HCI 版本 22H2
.NET Framework 4.8 目录 5028584
Azure Stack HCI 版本 21H2
.NET Framework 4.8 目录 5028584
Windows 10 版本 22H2
.NET Framework 4.8 目录 5028579
.NET Framework 4.8.1 目录 5028574
Windows 10 版本 21H2
.NET Framework 4.8 目录 5028579
.NET Framework 4.8.1 目录 5028574
Windows 10 1809 (2018 年 10 月更新) 和 2019 Windows Server
.NET Framework 4.7.2 目录 5028588
.NET Framework 4.8 目录 5028581
Windows 10 1607 (周年更新) 和Windows Server 2016
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5028623
.NET Framework 4.8 目录 5028580
Windows 10 1507
.NET Framework 4.6、4.6.2 目录 5028622
Windows Embedded 8.1 和 Windows Server 2012 R2
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5028590
.NET Framework 4.8 目录 5028585
Windows Embedded 8 和 Windows Server 2012
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5028589
.NET Framework 4.8 目录 5028583
Windows Embedded 7 Standard 和 Windows Server 2008 R2 SP1
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5028591
.NET Framework 4.8 目录 5028586
所有受支持的 Windows 版本
.NET 6.0.19 目录 5028613
.NET 7.0.8 目录 5028614

此问题已在 2023 年 7 月 11 日发布的常规累积汇总中得到解决,适用于所有受支持的 Windows .NET Framework 版本和受此问题影响的 Windows Server 版本。  安全和质量汇总可通过 Windows 更新、Windows Server Update Services 和 Microsoft 更新目录获得。

注意:依赖 Windows 更新和 Windows Server Update Services 的客户将自动收到特定于 .NET Framework 版本的更新。 高级系统管理员还可以使用以下直接 Microsoft 更新目录下载链接,以获取特定于 .NET Framework 的更新。 在应用这些更新之前,请确保仔细查看 .NET Framework 版本适用性,以确保仅在应用这些更新的系统上安装更新。

如果对此问题使用了任何解决方法或缓解措施,则你不再需要它们,建议将它们删除。 要删除解决方法,请查看已针对说明应用的解决方法或备用解决方法。

产品版本 更新 知识库文章
Windows 11 版本 22H2
.NET Framework 3.5、4.8.1 目录 5028851
Windows 11 版本 21H2
.NET Framework 3.5、4.8 目录 5028856
.NET Framework 3.5、4.8.1 目录 5028850
Windows Server 2022
.NET Framework 3.5、4.8 目录 5028858
.NET Framework 3.5、4.8.1 目录 5028852
Azure Stack HCI 版本 22H2 5028935
.NET Framework 3.5、4.8 目录 5028858
Azure Stack HCI 版本 21H2 5028943
.NET Framework 3.5、4.8 目录 5028858
Windows 10 版本 22H2 5028937
.NET Framework 3.5、4.8 目录 5028853
.NET Framework 3.5、4.8.1 目录 5028849
Windows 10 版本 21H2 5028944
.NET Framework 3.5、4.8 目录 5028853
.NET Framework 3.5、4.8.1 目录 5028849
Windows 10 1809 (2018 年 10 月更新) 和 2019 Windows Server 5028936
.NET Framework 3.5、4.7.2 目录 5028862
.NET Framework 3.5、4.8 目录 5028855
Windows 10 1607 (周年更新) 和Windows Server 2016
.NET Framework 3.5、4.6.2、4.7、4.7.1、4.7.2 目录 5028169
.NET Framework 4.8 目录 5028854
Windows 10 1507
.NET Framework 3.5、4.6、4.6.2 目录 5028186
Windows Embedded 8.1 和 Windows Server 2012 R2 5028941
.NET Framework 3.5 目录 5028872
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5028864
.NET Framework 4.8 目录 5028859
Windows Embedded 8 和 Windows Server 2012 5028940
.NET Framework 3.5 目录 5028869
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5028863
.NET Framework 4.8 目录 5028857
Windows Embedded 7 Standard 和 Windows Server 2008 R2 SP1 5028939
.NET Framework 3.5.1 目录 5028871
.NET Framework 4.6.2、4.7、4.7.1、4.7.2 目录 5028865
.NET Framework 4.8 目录 5028860
Windows Server 2008 SP2 5028942
.NET Framework 2.0、3.0 目录 5028870
.NET Framework 4.6.2 目录 5028865

受影响的更新

以下 .NET Framework 和 .NET 版本受到影响:

  • 安装 2022 年 6 月 13 日安全更新时的 .NET Framework 4.6.2、4.7、4.7.1、4.7.2。
  • 安装 2022 年 6 月 13 日安全更新时的 .NET Framework 4.8。
  • 安装 2022 年 6 月 13 日安全更新时的 .NET Framework 4.8.1。
  • .NET 6.0.18。
  • .NET 7.0.7。

常见问题解答 (FAQ)

此更改是何时引入的?

此行为更改是在 2022 年 6 月 13 日的 .NET 和 .NET Framework 安全更新中引入的。

是否有必要安装此新更新?

仅当应用程序遇到本文顶部“症状”标题中描述的问题时,才需要安装此新更新。 如果未遇到此问题,则无需安装此更新。

此新更新是否会替换 2023 年 6 月 13 日的 .NET Framework 更新?

不。 如果使用 .NET Framework,应先安装 2023 年 6 月 13 日汇总或仅安全更新,然后再安装新的 2023 年 6 月 22 日更新。

此新更新是否替换 .NET 6.0.18 或 .NET 7.0.7?

可以。 作为此更新的一部分,我们还将发布 .NET 6.0.19 和 .NET 7.0.8,这两个版本都可以从 https://get.dot.net/ 下载。 这些版本旨在替换 2023 年 6 月 13 日发布的 .NET 6.0.18 和 .NET 7.0.7。

.NET 6.0.19 / 7.0.8 和 .NET 6.0.18 / 7.0.7 之间的唯一区别是上面提到的兼容性修复。 除了 .NET 6.0.18 / 7.0.7 中已发布的内容之外,.NET 6.0.19 / 7.0.8 不包含任何其他安全修补程序。

有关保护和安全的信息