Windows 11 第三方通行密钥管理器的隐藏陷阱:数字签名证书才是关键!

Windows 11 最近开放了第三方通行密钥管理器(如 1Password、Bitwarden 等)。通行密钥(Passkeys)作为密码的替代品,提供了更安全、更便捷的无密码认证方式。然而,在实际使用中,我遇到了一个奇怪的现象:某些应用可以顺利注册和使用通行密钥,而另一些应用却只能依赖外部安全密钥或移动设备。这让我百思不得其解。经过一番代码对比和深入研究,我终于揭开了谜底:应用的数字签名证书才是决定 Windows 能否调用第三方通行密钥管理器的关键。

问题现象

最初,我在使用一些常见的网站和应用时,发现通行密钥的注册和登录流程非常顺畅。Windows 11 会自动弹出我的第三方密码管理器(如 1Password),允许我创建或选择通行密钥。但当我尝试一些小众或开发中的应用时,系统却拒绝调用第三方管理器,只允许使用外部安全密钥(如 Yubikey)或移动设备进行认证。这种不一致性让我感到困惑。

深入探究

通过查看 Windows 11 的官方文档、开发者论坛以及一些开源项目的代码,我注意到所有通行密钥的调用都依赖于 Windows 的 WebAuthn API。进一步分析发现,Windows 11 对调用通行密钥管理器的应用有一个隐藏要求:应用必须具有有效的数字签名,且签名证书必须受系统信任。

未签名或使用自签名证书(但未安装到系统信任存储)的应用,将被系统视为“不受信任”,从而禁止调用第三方通行密钥管理器。

验证假设

为了验证这一发现,我进行了一个简单的实验:

  1. 我访问了 webauthn.io(一个常用的 WebAuthn 测试网站),在 Chrome 中测试。由于浏览器具有数字签名证书且受信任,通行密钥管理器被正常调用。
    Chrome.exe
  2. 接下来,在 Chromium 中测试。Chromium 未包含数字签名证书,当尝试注册通行密钥时,Windows 11 拒绝调用第三方管理器,只显示外部安全密钥选项。
    Chromium.exe
  3. 然后,我为该应用生成自签名证书,并将证书安装到系统的“受信任的根证书颁发机构”存储中。再次测试时,第三方通行密钥管理器被成功调用。
    Signed Chromium.exe

实验证实:数字签名及其信任状态是决定因素。

生成和安装自签名证书

对于开发者或希望测试通行密钥功能的用户,可以通过以下步骤生成和安装自签名证书:

安装证书签名工具

使用 Visual Studio 安装 Windows 11 SDK,其中 bin 目录包含了证书签名工具。

生成自签名证书

1
makecert.exe -n "CN=TEST" -r -sv test.pvk test.cer

生成完成后,将 test.cer 安装到系统的“受信任的根证书颁发机构”存储中。

生成软件发布者证书

1
cert2spc.exe test.cer test.spc

合并 PFX 证书文件

1
pvk2pfx.exe -pvk test.pvk -spc test.spc -pfx test.pfx

签署应用程序

1
signtool.exe sign /v /f test.pfx /tr http://timestamp.digicert.com /td sha256 chrome.exe

Windows 11 第三方通行密钥管理器的隐藏陷阱:数字签名证书才是关键!
https://blog.xtao.de/400.html
作者
深海小涛
发布于
2026年1月1日
许可协议