![Windows Server 2012R2 -> TLS1.2 握手的 SERVER HELLO/CERTIFICATE 请求文件中未列出受信任的根 CA 存储(本地计算机)](https://linux22.com/image/695765/Windows%20Server%202012R2%20-%3E%20TLS1.2%20%E6%8F%A1%E6%89%8B%E7%9A%84%20SERVER%20HELLO%2FCERTIFICATE%20%E8%AF%B7%E6%B1%82%E6%96%87%E4%BB%B6%E4%B8%AD%E6%9C%AA%E5%88%97%E5%87%BA%E5%8F%97%E4%BF%A1%E4%BB%BB%E7%9A%84%E6%A0%B9%20CA%20%E5%AD%98%E5%82%A8%EF%BC%88%E6%9C%AC%E5%9C%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%EF%BC%89.png)
我的公司开发了一个基于 .net 的应用程序(依赖于 SChannel),旨在在同一 SW 的两个实例之间执行 TLS1.2 相互认证,一个实例充当客户端,另一个实例在 TLS1.2 相互认证会话中充当服务器。
客户端和服务器 SW 实例都部署在不同的 Windows 操作系统服务器 (2008R2 和 2012R2) 上。
我们已在 Windows Server 2008 R2 操作系统(“客户端”和“服务器”软件实例均在 WIN 2008R2 操作系统上运行)上成功测试了该应用程序;在这种情况下,服务器在“证书请求”部分下的 TLS1.2 握手的初始“服务器 Hello”消息中提供了一个“专有名称”列表,该列表与在同一服务器上运行的受信任的根 CA 证书存储(本地计算机)的内容相匹配,符合 TLS1.2 RFC 标准。
但是,在 Win2012 R2 OS 环境中运行相同的应用程序(使用相同的证书集)时,在 Server Hello 消息期间,证书请求部分一直返回空的 DN 列表(即列出 0 个证书),即使受信任的根 CA 存储(本地计算机)中存在相同的受信任的根 CA。
当 SW 在 2008R2 或 2012R2 上运行时,在 TLS1.2 握手中充当客户端时,SW 能够成功使用在本地计算机 -> 个人 -> 证书下提供/安装的客户端身份验证证书。
我没有参与程序加密功能的代码开发,但我觉得我可能只是在从 2008R2 迁移到 2012R2 时缺少在操作系统级别引入的一些附加设置,而不是遇到软件问题 - 因此我想知道是否有人可以建议可能需要调整的操作系统设置。
谢谢