前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PowerShell:在 Windows 中创建并导出自签名证书

PowerShell:在 Windows 中创建并导出自签名证书

作者头像
运维开发王义杰
发布2023-08-10 19:22:44
1.3K0
发布2023-08-10 19:22:44
举报

在今天的数字化世界中,确保数据的安全性和完整性尤为重要。证书提供了一种验证数据来源并保护数据免受篡改的方法。本文将介绍如何在 Windows 环境中使用 PowerShell 创建并导出自签名证书。

证书和公钥基础设施

在我们开始之前,让我们首先了解一下证书和公钥基础设施(PKI)。

证书是一种包含公钥和一些识别信息的文件。在PKI中,证书是由可信任的第三方(称为证书颁发机构,CA)颁发的,CA证明了证书持有者的身份以及与之关联的公钥。然而,我们也可以创建自签名证书,即由证书持有者自己(而不是CA)签名的证书。

自签名证书在许多场景中都很有用,尤其是在测试和开发环境中。然而,因为它们不是由可信的CA签名的,所以在公共互联网上使用自签名证书可能会引起信任问题。

创建自签名证书

在 Windows 中,我们可以使用 PowerShell 的 New-SelfSignedCertificate cmdlet 来创建自签名证书。以下是一个创建自签名证书的例子:

代码语言:javascript
复制
$param = @{
    "DnsName" = "mylab.wang.io"; 
    "CertStoreLocation" = "Cert:\CurrentUser\My"; 
    "NotAfter" = (Get-Date).AddYears(10);
    "KeySpec" = "KeyExchange";
    "KeyExportPolicy" = "Exportable";
}
New-SelfSignedCertificate @param

这段代码创建了一个新的自签名证书,并将其存储在当前用户的 "My" 证书存储中。

  • 证书的主题名称(也就是 DNS 名称)设置为 "mylab.wang.io"。
  • 证书的有效期是从当前日期开始的 10 年。
  • "KeySpec" 参数设置为 "KeyExchange",表示这个证书可以用于密钥交换。
  • "KeyExportPolicy" 参数设置为 "Exportable",表示证书的私钥是可导出的。

导出自签名证书

一旦创建了证书,我们可能希望将其导出为文件,以便在其他设备或应用中使用。在 PowerShell 中,我们可以使用 Export-PfxCertificateExport-Certificate cmdlets 来导出证书。

Export-PfxCertificate cmdlet 导出证书和其私钥为 PFX 文件(也称为 PKCS#12 文件)。这种文件类型包含证书的全部信息,包括私钥,因此需要保护好。以下是一个导出 PFX 文件的例子:

代码语言:javascript
复制
代码语言:javascript
复制
$pwd = ConvertTo-SecureString -String "Admin_123456" -Force -AsPlainText
Get-ChildItem -Path 'Cert:\CurrentUser\My' | Where-Object { $_.Subject -match "mylab.wang.io" } | Export-PfxCertificate -FilePath C:\Users\Administrator\Desktop\cert\mylab.wang.io.pfx -Password $pwd

这段代码从 "My" 证书存储中找出主题名称包含 "mylab.wang.io" 的证

代码语言:javascript
复制
书,并将其导出为 PFX 文件。导出的文件被加密,并使用密码 "Admin_123456"。

Export-Certificate cmdlet 则导出证书为 CER 文件(也称为 X.509 证书)。这种文件类型只包含证书的公钥部分,不包含私钥,因此可以在需要的地方公开分享。以下是一个导出 CER 文件的例子:

代码语言:javascript
复制
Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object { $_.Subject -match "mylab.wang.io" } | Export-Certificate -FilePath C:\Users\Administrator\Desktop\cert\mylab.wang.io.cer

完整脚本:

代码语言:javascript
复制
$param = @{
    "DnsName" = "mylab.wang.io"; 
    "CertStoreLocation" = "Cert:\CurrentUser\My"; 
    "NotAfter" = (Get-Date).AddYears(10);
    "KeySpec" = "KeyExchange";
    "KeyExportPolicy" = "Exportable";
}
New-SelfSignedCertificate @param
$pwd = ConvertTo-SecureString -String "Admin_123456" -Force -AsPlainText

Get-ChildItem -Path 'Cert:\CurrentUser\My' | Where-Object { $_.Subject -match "mylab.wang.io" } | Export-PfxCertificate -FilePath C:\Users\Administrator\Desktop\cert\mylab.wang.io.pfx -Password $pwd
Get-ChildItem -Path Cert:\CurrentUser\My\ | Where-Object { $_.Subject -match "mylab.wang.io" } | Export-Certificate -FilePath C:\Users\Administrator\Desktop\cert\mylab.wang.io.cer

总结

证书是保护网络通信和数据的重要工具。在 Windows 中,我们可以使用 PowerShell 来创建和导出自签名证书。虽然自签名证书在公共互联网上可能会引发信任问题,但它们在测试和开发环境中是非常有用的工具。如果需要一个可在公共互联网上被广泛接受的证书,应该考虑从一个公认的证书颁发机构获取证书。

希望你发现本文有用,并学到了一些新的 PowerShell 技巧!如果你有任何问题或需要更深入的解释,欢迎在评论区留言

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发王义杰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在今天的数字化世界中,确保数据的安全性和完整性尤为重要。证书提供了一种验证数据来源并保护数据免受篡改的方法。本文将介绍如何在 Windows 环境中使用 PowerShell 创建并导出自签名证书。
    • 证书和公钥基础设施
      • 创建自签名证书
        • 导出自签名证书
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档