powershell - 在远程服务器上使用 PowerShell 安装证书

标签 powershell certificate

我想在远程服务器上安装使用 makecert.exe 创建的证书 (X.509)。我无法使用 psexec 或类似的东西,但必须使用 PowerShell。

  • 服务器操作系统:Windows Server 2008 R2
  • PowerShell 版本:4

  • 问题:如何使用 PowerShell 在远程服务器上安装证书。

    最佳答案

    场景:ServerA 有 SSL 证书,ServerB 想要导入 SSL 证书

  • 定义两个变量(仅限 ServerB):
    $afMachineName = "SomeMachineNameOrIp"
    $certSaveLocation = "c:\temp\Cert.CER"
    
  • 在两台机器上启用信任(ServerA 和 ServerB):
    Function enableRemotePS() {
        Enable-PSRemoting -Force
        Set-Item wsman:\localhost\client\trustedhosts $afMachineName -Force
        Restart-Service WinRM
    }
    
  • 保存证书(仅限 ServerB):
    Function saveCert([string]$machineName,[string]$certSaveLocation) {
        Invoke-Command -ComputerName $machineName -ArgumentList $certSaveLocation -ScriptBlock {
            param($certSaveLocation)
            $cert = dir Cert:\LocalMachine\Root | where {$_.Subject -eq "CN=YOURCERTNAME" };
            $certBytes = $cert.Export("cert");
            [system.IO.file]::WriteAllBytes($certSaveLocation, $certBytes);
        }
    
        Copy-Item -Path \\$machineName\c$\temp\CertAF.CER -Destination $certSaveLocation
    }
    
  • 导入证书(仅限 ServerB)
    Function importCert([string]$certSaveLocation) {
        $CertToImport = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 $certSaveLocation
    
        $CertStoreScope = "LocalMachine"
        $CertStoreName = "Root"
        $CertStore = New-Object System.Security.Cryptography.X509Certificates.X509Store $CertStoreName, $CertStoreScope
    
        # Import The Targeted Certificate Into The Specified Cert Store Name Of The Specified Cert Store Scope
        $CertStore.Open([System.Security.Cryptography.X509Certificates.OpenFlags]::ReadWrite)
        $CertStore.Add($CertToImport)
        $CertStore.Close()
    }
    
  • 关于powershell - 在远程服务器上使用 PowerShell 安装证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278492/

    相关文章:

    xcode - 我应该使用哪个证书来签署我的 Mac OS X 应用程序?

    powershell - 如何避免字符串格式中添加前导空格?

    powershell - 用户配置文件名称和大小进入CSV文件

    powershell - 如何使用PowerShell删除目录中的所有文件和所有小于100kb的子目录

    tomcat - 为 Tomcat 编写自定义 SSL 上下文

    android - 在 Android 上以编程方式安装/访问 VPN/WIFI 证书

    java - tomcat 中的 SSL 实现给出消息,因为服务器的证书不受信任

    json - 如何在 Powershell 中使用 jq 写入 JSON 文件而不更改二进制文件?

    Exchange 2010 上的 C# 和 powershell - 无法识别术语 'Group-Object'

    ssl - Heroku CLI 错误 : unable to get local issuer certificate