$ConfigContent = @"
; Request.inf
[Version]
Signature="`$Windows NT$"
[NewRequest]
Subject = "CN=$CN,C=ES,ST=Barcelona,L=Barcelona,O=$O"
KeySpec = 1
KeyLength = 2048
Exportable = TRUE
MachineKeySet = TRUE
SMIME = False
PrivateKeyArchive = FALSE
UserProtected = FALSE
UseExistingKeySet = FALSE
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = PKCS10
KeyUsage = 0xa0
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication
[Extensions]
2.5.29.17 = "{text}"
_continue_ = "DNS=$CN&"
_continue_ = "DNS=testing.$CN&"
"@
$ConfigContent | Out-File -FilePath "$CN.inf" -Encoding ASCII
# Create a certificate request
if (certreq -new -f "$CN.inf" "$CN.csr") {
# Submit the request to a Certificate Authority
# Define a regular expression pattern to match the ID
$pattern = 'Id\. de solicitud: (\d+)'
$commandOutput = certreq -submit -config "localhost\COMPANY-AD01-CA" "$CN.csr" "$CN.crt"
# Use the Select-String cmdlet to find the first match in the output
$match = $commandOutput | Select-String -Pattern $pattern | Select-Object -First 1
if ($match) {
$id = $match.Matches.Groups[1].Value
# Accept the issued certificate
certutil -config "localhost\COMPANY-AD01-CA" -resubmit $id
certreq -config "localhost\COMPANY-AD01-CA" -q -f -retrieve $id "$CN.crt"
Remove-Item -Path "$CN.inf", "$CN.csr", "$CN.rsp", "$CN.csr" -Force
}
else {
Write-Host "Failed to submit the certificate request."
}
}
else {
Write-Host "Failed to create the certificate request."
}
Usando isso eu crio um certificado, envio para a CA e aceito.
certreq -retrieve
só me dá o certificado, não a chave, como faço para obter a chave ou como uso esse certificado no Apache?
Você precisaria usar
certutil -exportPFX
ouExport-PfxCertificate
para exportar a chave privada - ambos fornecem um arquivo no formato PKCS#12 (.pfx
ou.p12
), que você pode usar como está para Apache Tomcat (ou qualquer coisa que use "Java keystores"), ou converta para um arquivo de chave privada no formato PKCS#8 para Apache httpd (ou qualquer coisa que use chaves de formato "PEM").Depois, você pode excluir o certificado e a chave do Windows.
Para converter para PKCS#8 (PEM), não tenho certeza se o Windows possui algo integrado, mas a ferramenta openssl usual também está disponível para Windows:
Depois de instalar as ferramentas OpenSSL, no entanto, pode ser mais fácil usá-las apenas
openssl req
para a tarefa, pois elas geram diretamente uma chave privada PKCS#8 que o Apache aceita.