如何在 Windows Server 2016 中部署自定义密码套件排序

本文提供有关在 Windows Server 2016 中为 Schannel 部署自定义密码套件排序的信息。

适用于:Windows Server 2016
原始 KB 数: 4032720

总结

若要在 Windows 中为 Schannel 部署自己的密码套件排序,必须首先列出与 HTTP/2 兼容的密码套件。 HTTP/2(RFC 7540)块列表上的密码套件必须显示在列表底部。 例如:

密码块链 (CBC) 模式密码套件:

  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

非 PFS(完美向前保密)密码套件:

  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256

如果块列表中的密码套件列在列表顶部,则 HTTP/2 客户端和浏览器可能无法协商任何与 HTTP/2 兼容的密码套件。 这会导致无法使用协议。

例如,使用 Chrome 时,可能会收到错误ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY。

Windows Server 2016 中的默认排序与 HTTP/2 密码套件首选项兼容。 此外,此排序在 HTTP/2 之外是很好的,因为它倾向于具有最强安全特征的密码套件。 因此,默认排序可确保 Windows Server 2016 上的 HTTP/2 不会与浏览器和客户端有任何密码套件协商问题。

解决方法

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表

如果未能使用协议,则必须在重新排序密码套件时暂时禁用 HTTP/2。

若要启用和禁用 HTTP/2,请执行以下步骤:

  1. 启动 regedit (注册表编辑器)。
  2. 移动到此子项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters.
  3. 将 DWORD 类型值 EnableHttp2Tls 设置为以下值之一:
    • 将其设置为 0 以禁用 HTTP/2。
    • 将其值设置为 1 以启用 HTTP/2。
  4. 重新启动计算机。

参考