返回

如何在 Windows 中使用 PowerShell 创建 .pem 格式的自签名证书?

windows

在 Windows 中使用 PowerShell 创建 .pem 格式的自签名证书

作为一名程序员,我经常遇到需要在 Windows 系统中创建自签名证书的情况。通过 PowerShell 的强大功能,这一任务变得非常容易。本文将分步指导你完成从头开始使用 PowerShell 创建和导出 .pem 格式证书的整个过程。

步骤:

1. 创建自签名证书

首先,我们使用 New-SelfSignedCertificate cmdlet 创建一个自签名证书,并将其存储在 Windows 证书存储中。

Write-Host "Create Windows Certificate"

$paramsCreate = @{
    DnsName = 'localhost'
    CertStoreLocation = 'Cert:\LocalMachine\My'
}
$cert = New-SelfSignedCertificate @paramsCreate

2. 创建密码

接下来,创建一个密码来保护证书的私钥。

Write-Host "Create Password"
$mypwd = ConvertTo-SecureString -String '1234' -Force -AsPlainText

3. 将证书导出为 .pfx

现在,使用 Export-PfxCertificate cmdlet 将证书导出为 .pfx 格式,以便稍后转换为 .pem 格式。

Write-Host "Export Certificate as Pfx"
$paramsExport = @{
    Cert = $cert
    FilePath = 'C:\temp.pfx'
    Password = $mypwd
}
Export-PfxCertificate @paramsExport

4. 将 .pfx 转换为 .pem

接下来,使用 Convert-PfxToPem cmdlet 将 .pfx 证书转换为 .pem 格式。

Write-Host "Convert pfx to pem"
Convert-PfxToPem -InputFile 'C:\temp.pfx' -Password $mypwd -Outputfile 'C:\tmp.pem'

5. 提取私钥和证书

最后,从 .pem 文件中提取私钥和证书,将它们保存在单独的文件中。

(Get-Content 'C:\tmp.pem' -Raw) -match "(?ms)(\s*((?<privatekey>-----BEGIN PRIVATE KEY-----.*?-
----END PRIVATE KEY-----)|(?<certificate>-----BEGIN CERTIFICATE-----.*?-----END CERTIFICATE-----))\s*){2}"

$Matches["privatekey"] | Set-Content "C:\key.pem"
$Matches["certificate"] | Set-Content "C:\cert.pem"

结论

按照这些步骤,你已经成功地在 Windows 中使用 PowerShell 创建了一个自签名证书,并将其转换为 .pem 格式。现在,你可以使用此证书进行任何需要它的操作。

常见问题解答

  • 为什么我们需要使用 PowerShell 创建自签名证书?

使用 PowerShell 可以自动化创建证书的过程,并可以轻松自定义证书的属性。

  • 我可以使用 PowerShell 创建其他类型的证书吗?

是的,除了自签名证书,你还可以使用 PowerShell 创建根证书、中间证书和代码签名证书等其他类型的证书。

  • 创建 .pem 证书有什么优势?

.pem 证书是一种基于文本的格式,可以很容易地与其他平台和系统共享。

  • 为什么我们需要保护证书的私钥?

私钥用于对证书进行签名,确保证书的真实性。保护私钥可以防止未经授权的访问。

  • 是否可以创建具有更长有效期的证书?

是的,你可以使用 -NotAfter 参数指定证书的有效期。有效期以天数指定。