提问人:Levi Wallach 提问时间:2/12/2022 最后编辑:Levi Wallach 更新时间:11/1/2023 访问量:833
升级到 Windows 11 后不再提示 localhost 的 CAC
No longer prompted for CAC for localhost after upgrade to Windows 11
问:
升级到 Windows 11 后,本地 ASP.Net 应用程序不再提示我输入 CAC,因此我无法通过 https 访问该站点。我可以通过 http 访问它。我环顾四周,我的绑定被设置为具有友好名称“IIS Express Development Certificate”的证书,但是当我在我的证书存储中查找它时,或者我相信它是由它颁发的“localhost”,它没有显示出来。因此,我继续通过 powershell 创建了一个新的自签名证书:
New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "localhost" -FriendlyName "IIS Dev Express Take 2" -NotAfter (Get-Date).AddYears(10)
我将其复制到证书存储中的受信任根证书颁发机构和中间颁发机构文件夹,并在绑定中选择了此新证书,但仍然遇到相同的问题。在这一点上,我不确定我还能尝试什么来解决这个问题。
只是补充一点,因为我已经为此工作了几天:
我曾多次尝试删除和添加服务器证书,将它们从我的个人存储复制到受信任的存储和中间存储等。我尝试复制同事的applicationhost.config文件,或者至少复制与我不同的特定于身份验证的部分。我尝试直接从 Visual Studio 运行该站点,而不是在 IIS 中独立运行。我什至尝试删除并重新添加IIS Express,这会重新生成最初安装的IIS Express开发证书。我做什么似乎并不重要。该应用程序具有以下功能:
_cert = Context.Request.ClientCertificate;
if (_cert.IsPresent)
{
transferCACLoginToConsent = ProcessCAC();
}
但它永远不会进入内部代码,因为 Context.Request.ClientCertificate 的计算结果总是在我单步执行此操作时为 false,并且不会提示用户输入 CAC/客户端证书。
答:
我现在也遇到了这个问题,也是在升级到 Windows 11 之后。我还不完全理解这个问题,但相信我可以为您提供实质性的解决方法。该问题与 TLS 以及 Windows 使用的默认值有关 - 适用于 Windows 10 的 TLS 1.2 和适用于 Windows 1.3 的 TLS 11。我能够通过修改注册表以强制执行 TLS 1.2 来恢复本地站点的 CAC 身份验证/授权。(显然,长期或永久的解决方案需要允许 TLS 1.3 工作;我打算继续在这方面开展工作。
具体而言,在现有 Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SecurityProviders\SCHANNEL\Protocols\ 项下,添加(根据需要)TLS 1.2 和 TLS 1.3 项,然后在这两个新项下为每个项添加一个服务器项。在新的服务器密钥中,添加名称为 Enabled 的 DWORD,并将其设置为 TLS 1.2 路径的 1,并将其保留为 TLS 1.3 路径的 0(默认值)。
本网站将引导您完成这些编辑:https://thesecmaster.com/how-to-enable-tls-1-2-and-tls-1-3-on-windows-server/。它还允许您创建客户端密钥和 DisabledByDefault DWORD,但我发现这些没有必要。
Since this solution does entail edits to you system registry, it would be prudent to export its state beforehand for revertability. I exported my 'before' \Protocols branch.
For me it worked when I checked "Disable TLS 1.3 over TCP" in the Edit bindings.
I was doing setup on win 11 & SSL certificate message was not prompting.
Go to to IIS > site > select site > Bindings(right side panel) > select binding > Edit > Check the box 'Disable TLS 1.3 over TCL'
Restart IIS. It should work.
评论