You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PSPKI的Submit-CertificateRequest不存储CSR到文件提交请求

问题描述

我正在使用PowerShell PKI模块(PSPKI)管理企业ADCS证书,已开发基于PS脚本的工具以提升便利性、节省时间。目前签发证书时,使用Submit-CertificateRequest命令需通过-Path参数传入存储在文件中的CSR,命令示例为:

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

这意味着每次在脚本中提供CSR时,都必须先将其存储到文件,再执行命令签发证书,最后删除CSR文件,流程繁琐。我希望去掉这一环节,请问:

  1. 是否可以不将CSR存储到文件就直接作为输入传入该命令?-Path参数是必填项,有没有办法规避文件存储?
  2. 有没有更好的无文件提交证书请求的方式?优先希望通过现有PSPKI命令实现。
解决方案

方法1:使用PSPKI的-Request参数直接传入CSR对象(推荐)

Submit-CertificateRequest存在一个未在基础帮助中重点说明的参数集,支持直接传入X509CertificateRequest类型的对象,完全跳过文件存储步骤:

  1. 将内存中的CSR文本(PEM格式)转换为X509CertificateRequest对象:
# 假设$csrContent是你已获取到的CSR文本内容
$csrBytes = [System.Text.Encoding]::UTF8.GetBytes($csrContent)
$csrRequest = New-Object System.Security.Cryptography.X509Certificates.X509CertificateRequest($csrBytes)
  1. 直接提交请求:
Submit-CertificateRequest -Request $csrRequest -CertificationAuthority $cca -Attribute "CertificateTemplate:$certificateTemplate"

你可以通过Get-Command Submit-CertificateRequest -Syntax查看完整参数集,确认该重载的存在。注意需确保PSPKI版本在2.0及以上,旧版本可通过Install-Module PSPKI升级。

方法2:使用certreq.exe配合管道(替代方案)

若因特殊情况无法使用PSPKI的上述参数,可通过Windows自带的certreq.exe结合PowerShell管道实现无文件提交:

$csrContent | certreq -submit -config "$($cca.Name)\$($cca.ComputerName)" -attrib "CertificateTemplate:$certificateTemplate" -

命令中的-表示从标准输入读取CSR内容,无需写入任何临时文件。

内容的提问来源于stack exchange,提问作者user1563721

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 18:33:19