我的公司开发了一个基于 .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 时缺少在操作系统级别引入的一些附加设置,而不是遇到软件问题 - 因此我想知道是否有人可以建议可能需要调整的操作系统设置。
谢谢