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

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

我的 Win7 机器上的证书存储一直挂起。观察:


1.cmd 目录

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

C:\>设置 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)>设置 PROMPT=$P$G

目录:\>

解释:

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

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

谢谢。

附言

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

certutil -? | findstr /i ping
set PROMPT=$P($t)$G
certutil -ping
certutil -pingadmin
set PROMPT=$P$G

编辑1

我已经成功确定了导致问​​题的单个 Windows API -获取域名称

根据 windbg,证书实用程序像这样调用它:

PDOMAIN_CONTROLLER_INFO pdci;
DWORD ret = ::DsGetDcName(NULL, NULL, NULL, NULL, DS_DIRECTORY_SERVICE_PREFERRED, &pdci);

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

在另一台机器上(碰巧是 Windows Server 2003),它几乎立即返回,并在返回的DOMAIN_CONTROLLER_INFO结构中返回正确的域控制器名称。

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

答案1

请检查以下内容

  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

相关内容