在Powershell中对Windows Server 2012 PKI进行身份验证

时间:2016-04-13 16:22:43

标签: authentication 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

1 个答案:

答案 0 :(得分:0)

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

相关问题