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

如何将RSA私钥导入Windows存储并通过PowerShell调用解密?

可行实现方案

一、解决PEM私钥导入Windows证书存储的问题

直接导入PEM私钥无原生图形化支持,可通过OpenSSL将PEM公私钥打包为PFX后导入,确保后续能被PowerShell调用:

  1. 用OpenSSL合并PEM公私钥为PFX(需确保私钥与对应公钥证书匹配):
    # 替换为你的私钥和公钥证书路径
    openssl pkcs12 -export -in public.cer -inkey private.key -out cert.pfx
    
    执行时需设置PFX密码,后续导入会用到。
  2. 导入PFX到Windows证书存储:
    • 图形化方式:双击PFX文件,选择「本地计算机」存储位置,按向导完成导入;生产环境可取消「标记此密钥为可导出」选项增强安全性,调试阶段可保留。
    • PowerShell批量导入:
      $pfxPath = "C:\your\path\cert.pfx"
      $pfxPassword = ConvertTo-SecureString "你的PFX密码" -AsPlainText -Force
      Import-PfxCertificate -FilePath $pfxPath -CertStoreLocation Cert:\LocalMachine\My -Password $pfxPassword
      
  3. 导入完成后可直接删除PFX文件,避免文件形式留存私钥:
    Remove-Item $pfxPath -Force
    

二、PowerShell读取存储中的私钥并解密

无需依赖PSPKI模块,直接使用.NET原生类读取证书存储中的密钥并解密:

1. 定位目标证书

通过证书指纹、主题等属性精准定位(先运行Get-ChildItem Cert:\LocalMachine\My查看所有证书属性):

# 替换为你的证书指纹
$certThumbprint = "XX XX XX ... 证书指纹"
$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object { $_.Thumbprint -eq $certThumbprint }

2. 提取私钥并解密密文

假设第三方工具输出的是Base64编码的PKCS#1填充密文,解密代码如下(需根据第三方工具的加密填充方式调整):

# 第三方工具生成的加密密文(Base64格式)
$encryptedBase64 = "第三方加密后的Base64字符串"
$encryptedBytes = [Convert]::FromBase64String($encryptedBase64)

# 提取RSA私钥并解密
$rsa = $cert.PrivateKey
if ($rsa -is [System.Security.Cryptography.RSACryptoServiceProvider]) {
    # 兼容旧版.NET框架逻辑
    $decryptedBytes = $rsa.Decrypt($encryptedBytes, $false) # $false对应PKCS#1填充
} else {
    # 新版.NET(Core/.NET 5+)逻辑
    $decryptedBytes = $rsa.Decrypt($encryptedBytes, [System.Security.Cryptography.RSAEncryptionPadding]::Pkcs1)
}

# 转换为明文密码并调用第三方工具
$plainTextPassword = [System.Text.Encoding]::UTF8.GetString($decryptedBytes)
& "C:\path\to\third-party-tool.exe" -password $plainTextPassword

注:若第三方工具使用OAEP填充,需将解密参数改为$true(旧版)或[System.Security.Cryptography.RSAEncryptionPadding]::OaepSHA256(新版)。

三、权限问题排查

若PowerShell无法读取私钥,需调整证书私钥权限:

  1. 打开certlm.msc(本地计算机证书管理器),找到目标证书,右键→「所有任务」→「管理私钥」。
  2. 添加运行PowerShell的用户/服务账户,授予「读取」权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:35:18