我们使用用户证书对各种服务进行身份验证,但是除非手动更新,否则证书将在一年后过期。我正在尝试创建一个登录脚本,该脚本将检测证书是否即将过期并主动对其进行续订。
我们当前使用的手动过程是让用户登录,启动certmgr.msc,展开“个人”>“证书”,右键单击该证书,“所有任务”>“使用新密钥续订证书”(如果已过期,则请求“新证书”)。
cd cert:\
$certs = Get-ChildItem -Recurse -ExpiringInDays 180 | Where subject -Like "*(foo)*"
if ($certs)
{
ForEach ($cert in $certs)
{
certreq -enroll -user -q -policyserver * $cert.thumbprint renew
}
}
我成功运行了一次,但是运行脚本时出现以下错误:
证书请求处理器:参数不正确。 0x80070057 (WIN32:87 ERROR_INVALID_PARAMATER)
如果输入垃圾数据或通过序列号或指纹识别证书,我将得到相同的结果。该脚本能够可靠地找到我想要的证书,但是certreq命令失败。
任何建议都将不胜感激。
答案 0 :(得分:0)
-证书参数丢失
Get-ChildItem cert:\ -Recurse -ExpiringInDays 180 | Where subject -Like "*(foo)*" | % {
certreq -enroll -user -q -policyserver * -cert $($_.thumbprint) renew
}