![根据签名模板查找已颁发的证书](https://linux22.com/image/789467/%E6%A0%B9%E6%8D%AE%E7%AD%BE%E5%90%8D%E6%A8%A1%E6%9D%BF%E6%9F%A5%E6%89%BE%E5%B7%B2%E9%A2%81%E5%8F%91%E7%9A%84%E8%AF%81%E4%B9%A6.png)
我正在寻找一种方法来根据 CA 的签名模板查询其颁发的证书。以下是我开始使用的方法(基于 PSPKI 4.0.0 模块);
$AllCerts= Get-CertificationAuthority -name CA_Authority | Get-IssuedRequest -Property Email,CertificateTemplate, CertificateTemplateOID
$RelevantInfo = ($AllCerts | ?{$_.CertificateTemplate -eq 'WebServer' -Or $_.CertificateTemplate -eq 'CustomTemplate'})
...但是,查询未找到“CustomTemplate”匹配项。我甚至尝试使用通配符逻辑;
$RelevantInfo = ($AllCerts | ?{$_.CertificateTemplate -eq 'WebServer' -Or $_.CertificateTemplate -like '*CustomTemplateName*'})
当我运行时我可以看到这些值;
Get-CertificateTemplate | Select Name, DisplayName, OID
但查询未找到“CustomTemplateName”的匹配项。有没有办法真正获取已颁发证书模板的“友好名称”信息?
答案1
对于自定义模板,$row.CertificateTemplate
属性包含模板对象标识符 (OID),而不是名称。仅对 V1 模板(内置且不可编辑)返回名称。
因此,就您而言,您必须首先获取请求的模板 OID,然后进行过滤:
$AllCerts= Get-CertificationAuthority -name CA_Authority | Get-IssuedRequest -Property Email,CertificateTemplate, CertificateTemplateOID
$OID = (Get-CertificateTemplate -Name 'CustomTemplate').Oid.Value
$RelevantInfo = ($AllCerts | ?{$_.CertificateTemplate -eq 'WebServer' -Or $_.CertificateTemplate -eq $OID})