Saya bisa bilang ya, itu layak. Tapi ini akan menjadi pekerjaan yang bagus, dan saya ragu siapa pun di situs tanya jawab gratis di internet akan secara sukarela melakukan semua pekerjaan sysadmin gratis ini untuk Anda ... yang mengatakan, setidaknya saya bisa membantu Anda memulai .
Ada dua cara utama untuk menyerang ini. Satu, seperti yang sudah Anda identifikasi, adalah dengan certutil. Anda mungkin akan menggunakan Powershell untuk menulis "pembungkus" di sekitar certutil.exe yang memberinya input dan mem-parsing outputnya.
Kedua, ada komponen COM Layanan Sertifikat CERTENROLLib, CERTCLIENTLib, dll. Ini memungkinkan Anda untuk skrip setiap dan semua pekerjaan yang akan menjadi manual, selama Anda bersedia untuk melakukan upaya mengerikan dari skrip itu.
Lihat, orang ini menggunakan C # dan antarmuka COM yang disebutkan di atas untuk membuat CSR, mengirimkan CSR ke Otoritas Sertifikat, dan mendapatkan respons dan menginstal sertifikat. C # mudah dipindahkan ke Powershell.
Kedua, certutil ... Anda dapat melakukan banyak hal dengan certutil, tetapi tidak berorientasi objek, itu semua parsing teks seperti hal-hal Unix dunia lama. Sebagai contoh, saya akan membagikan kepada Anda skrip Powershell pendek yang saya tulis yang menggunakan certutil untuk memindai permintaan sertifikat yang tertunda pada Otoritas Sertifikat, dan memperingatkan admin jika ada CSR yang tertunda yang memerlukan persetujuan.
[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
}