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

如何通过PowerShell批量配置IIS中心证书存储(含安全凭证)

批量配置IIS中心证书存储的PowerShell实现方案

前置准备

  • 确认所有目标服务器已安装IIS中心证书存储模块(Web-CertProvider),未安装的可通过PowerShell自动安装。
  • 确保文件共享权限已正确配置:Web服务器组对共享目录拥有读取权限。
  • 准备好以下信息:共享路径(如\\CertServer\CertStore)、访问共享的专用服务账号、证书密钥密码。

单台服务器配置脚本

以下脚本可在单台服务器上完成配置,所有敏感信息通过安全方式输入,避免明文暴露:

# 1. 安装IIS中心证书存储模块(若未安装)
if (-not (Get-WindowsFeature Web-CertProvider).Installed) {
    Install-WindowsFeature Web-CertProvider -IncludeManagementTools
}

# 2. 启用中心证书存储功能
Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name 'enabled' -Value 'True'

# 3. 设置共享存储路径
Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name 'physicalPath' -Value '\\CertServer\CertStore'

# 4. 配置共享访问凭证(交互式输入,避免明文)
$shareCred = Get-Credential -Message "输入访问证书共享的账号"
$encryptedSharePwd = ConvertFrom-SecureString $shareCred.Password
Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider/credentials' -Name 'userName' -Value $shareCred.UserName
Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider/credentials' -Name 'password' -Value $encryptedSharePwd

# 5. 配置证书密钥密码(安全输入)
$certPwd = Read-Host "输入证书密钥密码" -AsSecureString
$encryptedCertPwd = ConvertFrom-SecureString $certPwd
Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name 'privateKeyPassword' -Value $encryptedCertPwd

# 验证配置结果
Get-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name '*'

批量服务器配置方案

针对500+服务器,使用Invoke-Command远程执行脚本,需确保目标服务器已启用WinRM且执行账号拥有管理员权限:

  1. 准备服务器列表文件(如Servers.txt,每行一个服务器主机名/IP)
  2. 执行以下批量脚本:
# 读取目标服务器列表
$targetServers = Get-Content -Path "C:\Scripts\Servers.txt"

# 一次性输入敏感信息(仅输入一次,安全传递至远程)
$centralCertPath = "\\CertServer\CertStore"
$shareCredential = Get-Credential -Message "输入访问证书共享的服务账号"
$certPrivateKeyPwd = Read-Host "输入证书密钥密码" -AsSecureString

# 批量远程执行配置
Invoke-Command -ComputerName $targetServers -ScriptBlock {
    param($certPath, $shareCred, $certPwd)

    # 安装必要模块
    if (-not (Get-WindowsFeature Web-CertProvider).Installed) {
        Install-WindowsFeature Web-CertProvider -IncludeManagementTools -ErrorAction Stop
    }

    # 启用并配置中心证书存储
    Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name 'enabled' -Value 'True'
    Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name 'physicalPath' -Value $certPath

    # 加密并设置共享凭证
    $encryptedSharePwd = ConvertFrom-SecureString $shareCred.Password
    Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider/credentials' -Name 'userName' -Value $shareCred.UserName
    Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider/credentials' -Name 'password' -Value $encryptedSharePwd

    # 加密并设置证书密钥密码
    $encryptedCertPwd = ConvertFrom-SecureString $certPwd
    Set-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name 'privateKeyPassword' -Value $encryptedCertPwd

    # 返回配置信息用于验证
    return Get-WebConfigurationProperty -Filter '/system.webServer/centralCertProvider' -Name '*'
} -ArgumentList $centralCertPath, $shareCredential, $certPrivateKeyPwd -ErrorAction Continue

安全注意事项

  • 禁止硬编码敏感信息:所有凭证、密码均通过交互式输入或安全存储(如本地凭据管理器)读取,避免明文泄露。
  • 限制远程执行权限:用于批量执行的账号仅授予必要权限(目标服务器管理员、共享目录读取权限),避免过度授权。
  • 测试先行:先在少量测试服务器上验证脚本功能,确认配置无误后再批量执行。
  • WinRM安全配置:确保目标服务器WinRM启用HTTPS加密,限制允许访问的IP范围,防止未授权访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:05:15