windows PowerShell PKI模块(PSPKI)Submit-CertificateRequest不将CSR存储在文件中

ezykj2lf  于 12个月前  发布在  Windows
关注(0)|答案(1)|浏览(92)

我正在使用PowerShell PKI模块来管理我在企业ADCS上的证书。我已经创建了一个简单的工具,它使用PS脚本来更好地方便和保存一些时间。
在颁发证书时,我使用Submit-CertificateRequest命令,该命令通过-Path参数将存储在文件中的CSR作为输入:

Submit-CertificateRequest -Path $csrFileName -CertificationAuthority $cca -Attribute "CertificateTemplate:$certificateTemplate"

字符串
这意味着每当我在脚本中提供CSR时,我需要首先将其存储在文件中,然后使用命令颁发证书,然后删除带有CSR的文件。这是我想消除的复杂性。
有没有什么方法可以提供CSR作为命令的输入而不将其存储在文件中?-Path参数是必需的,我需要某种引用文件,该文件将用作CSR来颁发证书。我可以避免吗?有没有更好的方法可以提交请求而不将其存储在文件中?
我的主要接口是PowerShell,如果这对当前的PSPKI命令是可行的,那就太好了。

70gysomp

70gysomp1#

你可以模拟Submit-CertificateRequest的功能,但它可能比将其 Package 在函数中要长:

$req = "
-----BEGIN NEW CERTIFICATE REQUEST-----
MIICZzCCAdACAQAwETEPMA0GA1UEAwwGVGVzdFBTMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQCoSlRfphyVgWrwEPipstSe1pr4+mDOhBDP2ZJPsAevoTTQqt9x
iOnJnfPMLBWEiqYmPklf9WKBkzLKeC2RfE3a8FGNhRBZb3Vzj8PvBoCMc63hvy+i
q5hwVWDnWm96mpk+F3ykB60JWAAzL9vY+w2U6kAUQYo8/RPMZ1bLLCV0XQIDAQAB
oIIBFDAcBgorBgEEAYI3DQIDMQ4WDDEwLjAuMTc3NjMuMjBABgkrBgEEAYI3FRQx
MzAxAgEFDA5jYTIudzJrMTkudGVzdAwTVzJLMTlcYWRtaW5pc3RyYXRvcgwHTU1D
LkVYRTBKBgkqhkiG9w0BCQ4xPTA7MBoGA1UdEQQTMBGCD3d3dy5leGFtcGxlLm9y
ZzAdBgNVHQ4EFgQUsDOyEAUoOyC7dIdbbKZDNiSMXI8wZgYKKwYBBAGCNw0CAjFY
MFYCAQAeTgBNAGkAYwByAG8AcwBvAGYAdAAgAFMAbwBmAHQAdwBhAHIAZQAgAEsA
ZQB5ACAAUwB0AG8AcgBhAGcAZQAgAFAAcgBvAHYAaQBkAGUAcgMBADANBgkqhkiG
9w0BAQsFAAOBgQArPgWJ77GxhDlVLXQT2yB2XZh+SVCewDYjoBuqjnSQWFjpS5uB
ZK1XTNIYCCfb1uPgLxlB17cEd8/gZrLrOr9zwGEsOcqSL9LaaetEbkq5qPhfAvi0
e3DXpZ0BDkneYHGNKR5GPBuKMcKHgMkDPqj/kMgl7LFIfkR4St3ffoeF3Q==
-----END NEW CERTIFICATE REQUEST-----
"

$CertConfig = New-Object -ComObject CertificateAuthority.Config
$ConfigString = $CertConfig.GetConfig(1)
$CertRequest = New-Object -ComObject CertificateAuthority.Request
$Status = $CertRequest.Submit(0,$req,"CertificateTemplate:WebServer",$ConfigString)

字符串
请注意,上面的内容是公然抄袭了Submit-CertificateRequestweb page的作者(我写这篇文章的时候它是离线的,所以这里有一个cached version)。
GetConfig()方法接受一个参数:
| 值|意义|
| --|--|
| CC_DEFAULTCONFIG 0x0000000|检索默认证书颁发机构。|
| CC_UIPICKCONFIG 0x0000001|显示允许用户选择证书颁发机构的用户界面。|
| CC_FIRSTCONFIG 0x0000002|返回第一个证书颁发机构。|
| CC_LOCALACTIVECONFIG 0x0000004|检索正在运行的本地证书颁发机构。|
| CC_LOCALCONFIG 0x0000003|检索本地证书颁发机构。|
| CC_UIPICKCONFIGSKIPLOCALCA 0x0000005|显示允许用户选择证书颁发机构的用户界面。该用户界面不包括任何本地证书颁发机构。在将从属证书颁发机构证书请求提交给当前证书颁发机构以外的证书颁发机构时,此排除在从属证书颁发机构证书续订期间很有用。|
如果您事先知道CA Config字符串,则可以将其简化为两行:

$CertRequest = New-Object -ComObject CertificateAuthority.Request
$Status = $CertRequest.Submit(0,$req,"CertificateTemplate:WebServer","ca1.example.org\Example CA1")

相关问题