Powershell 中对 windows 服务器 2012 PKI 的身份验证

Authentication in Powershell to windows server 2012 PKI

我在 powershell 中创建了一个脚本,用于从 .INF 文件生成 .REQ。然后必须将该文件(.REQ)导入 PKI,然后生成 .CERT。

我的问题是我不知道如何从 Powershell 向 PKI 验证自己的身份。如果我可能会问第二个问题,我如何选择证书模板(在 PKI 在线屏幕中,我有一个选择框,我可以在其中选择我的模板(例如 Wifi 客户端)。

到目前为止,这是我的代码,当然我不知道如何进行身份验证,这是我的主要问题。我确切地说我知道登录名和密码(我使用 RDP 成功连接了自己)。

# Generate Request File .req

Write-Host " This script generates a .REQ (step 1/3 in certificate creation)"
Write-Host " "
Write-Host " Step 1/3: create .INF file with Key length and other parameters, create a .REQ file"
Write-Host " Step 2/3: import the .REQ file into the Intermediate PKI and generate a .CER"
Write-Host " Step 3/3: from the .CER file, create a .PFX with the exportable key"


# Variables declaration
#
#  UID = nom du PDA ou son numero de serie
#  $Login = login sur la PKI intermediate
#  $Pass = Password sur la PKI intermediate

$Date = (Get-Date).ToString('ddMMyyyy')
Write-Host " "
[string]$UID = read-host "Please enter the Device Name (or Serial Number)"
$Path = "C:\users\youcef\Desktop\Julie\"

$Login = "me"
$Pass = "pass"



# INF File content 

$ReqFile = "$UID" + "_" + "$Date" + ".req"
$InfFile = @"
[NewRequest]`r
Subject = "CN=$UID"`r
KeySpec = 1
Exportable = TRUE
RequestType = PKCS10
[PolicyStatementExtension]
Policies=InternalPolicy
[InternalPolicy]
OID= 1.2.3.4.1455.67.89.5
Notice="Legal Policy Statement
[Certsrv_Server]
RenewalKeyLength=1024
RenewalValidityPeriod=Years
RenewalValidityPeriodUnits=2
CRLPeriod=weeks
CRLPeriodUnits=52
CRLDeltaPeriod=Days
CRLDeltaPeriodUnits=0
LoadDefaultTemplates=1
AlternateSignatureAlgorithm=0
"@


# Generate Request File from INF File

Write-Host "Generating Certificate Request file..." -ForegroundColor Yellow;
$MYCERTNAME = "$UID" + "_" + "$Date" + ".inf"
New-Item $MYCERTNAME -type file -value $InfFile


certreq -new $path$MYCERTNAME $path$ReqFile
    Write-Host " "
Write-Host "Certificate request file for $UID successfully generated!" -foregroundcolor DarkGreen;


# Authentication on PKI: HERE I AM TOTALLY LOST

Connect-CertificationAuthority -ComputerName ca01.company.com
$password = ConvertTo-SecureString "password" -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential `
     -argumentlist $Login, $Pass

$serverNameOrIp = "192.168.1.1"
Restart-Computer -ComputerName $serverNameOrIp `
             -Authentication default `
             -Credential $cred
             <any other parameters relevant to you>
$cred = new-object -typename System.Management.Automation.PSCredential `
     -argumentlist $username, $password

$serverNameOrIp = "https://pki.mycompany.fr/certsrv/certrqxt.asp"
Restart-Computer -ComputerName $serverNameOrIp `
             -Authentication default `
             -Credential $cred
             <any other parameters relevant to you>


certreq -submit -config "https://pki.mycompany.fr/certsrv/certrqxt.asp"     $path$ReqFile $path$UID.cer   
#certreq -submit -config "https://pki.mycompany.fr\certsrv"           $path$ReqFile $path$UID.cer

certreq -accept $path$UID.cer
certutil -exportpfx -p "Welcome123" MY $UID $path\clientcerts$UID.pfx

我解决了直接在服务器上启动脚本的问题。 不是最好的解决方案,但我从来没有设法在 Powershell 中使用远程会话