使用更新的中级证书的新用户使用智能卡登录时出现错误 401.2

Error 401.2 with smartcard login for new users with more recent Intermediate certificate

总结

HTTP 错误 401.2 - 未经授权 由于身份验证无效,您无权查看此页面 headers。

我网站的一些新用户由于 401.2 和 401.1 错误而无法登录。其他新用户连接没有任何问题。用户拥有 DoD CAC 智能卡并且可以有效登录到他们的工作站。所有证书都指向相同的根权限,DOD Root 3,但具有不同的中间证书,即 DOD CA 38 到 DOD CA 51。中间证书编号为 48 或更高的用户会收到 401.2 错误,无法登录。

我认为问题是没有正确安装或配置更新的中间证书。我使用他们的工具 InstallRoot.exe 从证书颁发机构安装了最新的证书。 MMC 确认中间证书位于证书(本地计算机)-> 中间证书颁发机构-> 证书中。

服务器使用 Axway 工具验证证书。在尝试的应用程序事件日志中,它说 "Revocation Status: Good" 所以我假设我的 OCSP 及其缓存设置正确。

每个 401.2 错误之后是一个 401.1 错误。 401.1 错误的 sc-win32-status 是 -1073741715。这个数字重要吗?

详细配置说明:

我在 Windows Server 2008 R2 上使用 IIS 7.5。我将 Web 服务器和网站设置为需要智能卡才能打开网站。为此,我使用 manyToOneMappings 设置了 iisClientCertificateMappingAuthentication。我以同样的方式设置了三个新用户。三个新用户中的两个无法登录并同时获得 401.2(sc-status=401 sc-substatus=2 sc-win32-status=5)和 "Can't reach this page",错误代码:INET_E_DOWNLOAD_FAILURE.

客户端浏览器出错

用户在自己的工作站和能够登录成功的人的工作站上获取。因此,这不可能是客户端浏览器问题。

Can’t reach this page

• Make sure the web address https://MyWebSite is correct
• Search for this site on Bing
• Refresh the page

More information The connection to the website was reset. Error Code: INET_E_DOWNLOAD_FAILURE

IIS 日志条目

这是成功用户第一个 IP 和失败用户第二个 IP 的 IIS 日志条目。 sc-win32-status=64 ("specified network name is no longer available") 的 500 错误对于成功登录和不成功登录是相同的。

time            c-ip        cs-username s-port  cs-method   sc-status   sc-substatus    sc-win32-status time    cs-uri-stem
1/1/2000 19:32  Second IP               443     GET         401         2               5               1734    /
1/1/2000 19:32  Second IP               443     GET         500         0               64              16      /
1/1/2000 19:31  Second IP               443     GET         401         1               -1073741715     2       /
1/1/2000 19:31  Second IP               443     GET         401         2               5               2011    /
1/1/2000 19:31  Second IP               443     GET         500         0               64              118     /
1/1/2000 19:30  First IP    Server\User 443     GET         200         0               0               17      /HMSLoginController.asp
1/1/2000 19:30  First IP    Server\User 443     POST        302         0               0               4       /EntryBanner.asp
1/1/2000 19:30  First IP    Server\User 443     GET         200         0               0               22      /EntryBanner.asp
1/1/2000 19:30  First IP    Server\User 443     GET         200         0               0               4164    /
1/1/2000 19:30  First IP                443     GET         500         0               64              637     /

请求跟踪

402.2 错误的部分跟踪列表:

  1. -GENERAL_REQUEST_HEADERS Headers 连接:Keep-Alive 接受:text/html, application/xhtml+xml, image/jxr, / Accept-Encoding: gzip, deflate Accept-Language: en-US 主机: X.com User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) 像 Gecko DNT: 1

  2. -GENERAL_GET_URL_METADATA 物理路径
    访问权限 617

  3. -HANDLER_CHANGED OldHandlerName
    NewHandlerName 静态文件 NewHandlerModule StaticFileModule、DefaultDocumentModule、DirectoryListingModule NewHandlerScriptProcessor
    NewHandlerType

  4. -AUTH_START 验证类型支持 2 AuthTypeSupported 基本

  5. -AUTH_END

  6. -AUTH_START 授权类型支持 128 AuthTypeSupported MapCliCert

  7. -AUTH_END

  8. -AUTH_START 授权类型支持 4 AuthTypeSupported NT

  9. -AUTH_END

  10. -AUTH_START 授权类型支持 128 AuthTypeSupported MapCliCert

  11. -AUTH_REQUEST_AUTH_TYPE 请求授权类型 128 RequestAuthType CertMap

  12. -AUTH_END

  13. -AUTH_START 授权类型支持 16 AuthTypeSupported 摘要

  14. -AUTH_END

  15. -AUTH_START 验证类型支持 1 AuthTypeSupported 匿名

  16. -AUTH_REQUEST_AUTH_TYPE 请求授权类型 1 RequestAuthType 匿名

  17. -AUTH_SUCCEEDED 认证类型 4 NTLM使用错误 远程用户名
    授权用户名
    令牌模拟级别 2 授权类型 NT TokenImpersonationLevel ImpersonationImpersonate

  18. -USER_SET 授权类型
    用户名
    SupportsIsInRole 真

  19. -AUTH_END

  20. -GENERAL_SEND_CUSTOM_ERROR HTTPStatus 401 HttpSubStatus 2 文件名或 URL 401.htm

  21. -GENERAL_FLUSH_RESPONSE_START

  22. -GENERAL_RESPONSE_HEADERS Headers Content-Type: text/html 服务器: Microsoft-IIS/7.5 WWW-Authenticate: 协商 WWW-Authenticate: NTLM X-Powered-By: ASP.NET

配置

我使用制作我们根证书的实体分发的程序确认服务器拥有所有最新证书。我根据 CRL 和服务器的 OCSD 调用测试了客户端证书。

IIS 服务器配置

身份验证:仅启用 Active Directory 客户端证书身份验证 - 其他禁用 授权规则:拒绝匿名用户 - 仅条目

站点配置

身份验证:启用匿名身份验证并且Windows身份验证已启用 授权规则:允许 webUsers(本地服务器用户组)- 仅条目 配置编辑器:system.webServer/security/authentication/iisClientCertificateMappingAuthentication 默认登录D主要的 已启用 真 登录方法明文 manyToOneCertificateMappingsEnabled True manyToOneMappinqs(计数=19) oneToOneCertificateMappingsEnabled 假 oneToOneMappings (计数=0)

用户

在manyToOneMappinqs中设置的每个用户都有一个对应的本地服务器用户账号。本地用户帐户都在具有网站权限的 webUsers 组中。每个用户都有两个映射规则:Issuer ("O") 是创建智能卡的实体,Subject ("CN") 对每个用户都是唯一的。

用户列表分为两个文件:网站的 web.config 文件和服务器的 applicationhost.config 文件。合并后的用户构成站点配置编辑器中的列表。

这是用户证书的变化!

智能卡管理局正在对使用智能卡登录网站的方式进行更改。在卡片中添加了一个全新的证书,并将弃用当前用于登录的证书。之前我们告诉用户使用他们的电子邮件证书登录,因为这是我在使用一对一时放入 IIS 的证书- 一个映射。此外,它在他们签名的电子邮件中,因此很容易获得。但是,该电子邮件证书将不再用于登录。我改用了新证书,新人开始工作了。

对此进行解释的文件声称,旧的旧方法在明年之前仍然有效。啊!他们让我成为了早期采用者。