Answers:
检查公钥基础架构PowerShell模块。Approve-CertificateRequest和Receive-Certificate命令可以为您提供帮助。
我可以说是可行的。但这将是很多工作,而且我怀疑互联网上免费问答网站上的任何人都会自愿为您完成所有这些免费的系统管理员工作...也就是说,我至少可以帮助您入门。
有两种主要的攻击方法。正如您已经确定的那样,其中之一是certutil。您可能会使用Powershell在certutil.exe周围编写一个“包装器”,以提供输入并解析其输出。
其次,还有证书服务COM组件CERTENROLLib,CERTCLIENTLib等。只要您愿意付出艰巨的工作来编写脚本,这些脚本就可以使您编写任何其他手工编写的工作。
看,这个家伙正在使用C#和前面提到的COM接口来创建CSR,将CSR提交给证书颁发机构,并获得响应并安装证书。C#很容易移植到Powershell。
其次,certutil ...您可以使用certutil进行大多数操作,但是它不是面向对象的,而是像旧版Unix之类的所有文本解析程序。例如,我将与您分享一个简短的Powershell脚本,该脚本是我编写的,使用certutil扫描证书颁发机构上的挂起证书请求,并向管理员发出警告,告知是否有任何挂起的CSR需要批准。
[String]$CAName = 'SERVER01\MY-ISSUING-CA'
[String]$MailFrom = 'noreply@mydomain.com'
[String[]]$MailTo = 'CA-Team@domain.com'
[String]$SMTPServer = 'smtp.domain.com'
$Output = certutil -view -out "Request ID, Request Submission Date, Request Common Name, Requester Name, Request Email Address, Request Distinguished Name" -Restrict "Request Disposition=9"
If ($Output[-1] -NotLike '*successfully.')
{
Write-Error $Output
$Body = "<p>An error occurred on $CAName while checking for pending certificate requests.</p><pre>"
Foreach ($Line In $Output)
{
$Body += "$Line" + [Environment]::NewLine
}
$Body += "</pre>"
Send-MailMessage -SmtpServer $SMTPServer -From $MailFrom -To $MailTo -Subject "$CAName Encountered An Error!" -Body $Body -BodyAsHtml
Return
}
[Int]$NumberOfRequests = 0
If ([Int]::TryParse($Output[-2].Trim().Split(' ')[0], [ref] $NumberOfRequests))
{
If ($NumberOfRequests -GT 0)
{
$Body = "<p>There are pending certificate requests on $CAName.</p><pre>"
Foreach ($Line In $Output)
{
$Body += "$Line" + [Environment]::NewLine
}
$Body += "</pre>"
Send-MailMessage -SmtpServer $SMTPServer -From $MailFrom -To $MailTo -Subject "$CAName Has Pending Requests" -Body $Body -BodyAsHtml
}
Else
{
Write-Host "No pending certificate requests found."
}
}
Else
{
$Body = "<p>An error occurred on $CAName while checking for pending certificate requests.</p><pre>"
Foreach ($Line In $Output)
{
$Body += "$Line" + [Environment]::NewLine
}
$Body += "</pre>"
Send-MailMessage -SmtpServer $SMTPServer -From $MailFrom -To $MailTo -Subject "$CAName Encountered An Error!" -Body $Body -BodyAsHtml
}