certutil -ping 失败,超时 30 秒 - 该怎么办?

mar*_*ark 10 security certificate windows-7 ssl-certificate ad-certificate-services

我的 Win7 盒子上的证书存储不断挂起。观察:


C:\>1.cmd

C:\>certutil -? | findstr /我平
  -ping -- Ping Active Directory 证书服务请求接口
  -pingadmin -- Ping Active Directory 证书服务管理界面

C:\>set PROMPT=$P($t)$G

C:\(13:04:28.57)>certutil -ping
CertUtil: -ping 命令失败: 0x80070002 (WIN32: 2)
CertUtil:系统找不到指定的文件。

C:\(13:04:58.68)>certutil -pingadmin

CertUtil: -pingadmin 命令失败: 0x80070002 (WIN32: 2)
CertUtil:系统找不到指定的文件。

C:\(13:05:28.79)>设置提示=$P$G

C:\>

说明:

  • 第一个命令显示certutil有–ping–pingadmin参数
  • 尝试任何 ping 参数失败,超时 30 秒(当前时间在提示中看到)

这是一个严重的问题。它破坏了我的应用程序中的所有安全通信。如果有人知道如何解决这个问题 - 请分享。

谢谢。

聚苯乙烯

1.cmd 只是这些命令的一批:

certutil -? | findstr /i ping
set PROMPT=$P($t)$G
certutil -ping
certutil -pingadmin
set PROMPT=$P$G
Run Code Online (Sandbox Code Playgroud)

编辑1

我已成功确定导致问题的单个 Windows API - DsGetDcName

根据windbg,certutil -ping像这样调用它:

PDOMAIN_CONTROLLER_INFO pdci;
DWORD ret = ::DsGetDcName(NULL, NULL, NULL, NULL, DS_DIRECTORY_SERVICE_PREFERRED, &pdci);
Run Code Online (Sandbox Code Playgroud)

在我的工作站上,它超时 30 秒,然后返回错误代码 1355,即ERROR_NO_SUCH_DOMAIN 没有域控制器可用于指定的域或域不存在。

在另一台机器上,它意外地是 Windows Server 2003,它几乎立即返回,并在返回的DOMAIN_CONTROLLER_INFO结构中包含正确的域控制器名称。

现在的问题是我的工作站上缺少该 API 以找到正确的域控制器的什么?

Mit*_*aik 0

请检查以下内容

  1. certutil -ping -config "cadnsname\CA logical name"您可以从受影响的主机运行吗?

  2. 谁有权在 CA 请求证书(是否有人将经过身份验证的用户更改为域用户)?

  3. 查看 DCOM 权限以确保经过身份验证的用户在 CA 具有正确的权限。CA 上证书服务 DCOM 访问组的 DCOM 权限:

    访问权限级别 -> 本地访问 - 允许、远程访问 - 允许启动和激活权限级别 -> 远程启动 - 允许、远程激活 - 允许

有关更多详细信息,您可以参考以下 URL 进行故障排除。

http://blogs.technet.com/b/askds/archive/2007/11/06/how-to-troubleshoot-certificate-enrollment-in-the-mmc-certificate-snap-in.aspx