[玩转系统] New-SelfSignedCertificate:使用 PowerShell 创建证书
作者:精品下载站 日期:2024-12-14 13:07:56 浏览:13 分类:玩电脑
New-SelfSignedCertificate:使用 PowerShell 创建证书
您需要 SSL 证书来开发网站或测试应用程序吗?与其从第三方提供商购买昂贵的数字证书,为什么不自己创建自签名证书呢?不用担心; PowerShell 为您提供了 New-SelfSignedCertificate
cmdlet。
在本教程中,您将学习如何使用各种示例在 PowerShell 中创建新的自签名证书。最后,您将创建具有不同属性并用于不同目的的自签名证书。让我们开始吧!
先决条件
如果您想亲自学习本教程,请确保您满足以下要求。
- 装有 Windows PowerShell 5.1 或最新 PowerShell 7(截至撰写本文时为 v7.1.3)的 Windows 计算机。本教程将使用 Windows 10 版本 2004 和 Windows PowerShell 5.1。
- 您的用户帐户必须具有本地计算机的管理员权限。
- 在本文中,您将使用提升的 PowerShell 会话(以管理员身份运行),并假设您已经打开了该会话。
创建具有单一主题的证书
当您需要在 PowerShell 中创建自签名证书时,New-SelfSignedCertificate
cmdlet 是您的好帮手。此 cmdlet 将帮助您创建用于不同目的的证书,例如代码签名、服务器身份验证和文档加密等。
要创建仅包含一个主题(例如单个网站 URL 或一个服务器 FQDN)的自签名证书,New-SelfSignedCertificate
cmdlet 仅需要 Subject
参数。您可以将主题视为证书的唯一标签,将其与其他证书区分开来。
例如,在 PowerShell 中运行以下命令,为名为 LocalSite.com 的网站创建自签名证书。此示例将在本地计算机个人证书存储中创建证书以用于服务器身份验证。对于 Web 服务,通常使用证书将保护的网站的 URL 作为主题名称。
本地计算机证书存储中的证书可供本地计算机上的所有用户全局使用。相比之下,当前用户证书存储中的证书仅对当前用户可用。
# Create a self-signed certificate in the local machine personal certificate store and store the result in the $cert variable.
$cert = New-SelfSignedCertificate -Subject localsite.com
# Display the new certificate properties
$cert | Format-List -Property *
要在当前用户个人证书存储 (Cert:\CurrentUser\My
) 中创建新证书,请添加 -Certstorelocation Cert:\CurrentUser\My
参数 或在受信任的根证书颁发机构存储中使用 Cert:\LocalMachine\Root
。
下面的屏幕截图显示了创建证书并显示其所有属性后的预期结果。您可以看到 selfsignedcertificate cmdlet 自动将 CN=
前缀添加到使用者名称中。
创建使用者备用名称 (SAN) 证书
您已经创建了一个具有单个主题名称的证书,如果您要将其部署到一个网站,这很好。但是,如果您有多个网站,例如 localsite.com、 content.localsite.com 和 apps.localsite.com,该怎么办?
您可以创建一个具有多个使用者备用名称 (SAN) 的证书,而不是为每个网站创建自签名证书。这种类型的证书称为 SAN 证书。
要创建 SAN 证书,请运行带有 DnsName
参数的 New-SelfSignedCertificate
。 DnsName
参数接受您想要包含在证书中的一个或多个使用者名称。
当您为 DnsName
参数提供多个值时,DnsName
参数中的第一个字符串将显示为证书的主要使用者名称。其他名称将是替代名称。无论哪个主题名称是主要的,都不会影响证书的可用性,并且功能相同。
例如,要为 localsite.com、content.localsite.com 和 apps.localsite.com 创建 SAN 证书,请运行以下命令下面在 PowerShell 中。
# Create a self-signed SAN certificate in the local machine personal certificate store and store the result in the $cert variable.
$cert = New-SelfSignedCertificate -DnsName localsite.com,content.localsite.com,apps.localsite.com
# Display the new certificate properties
$cert | Format-List -Property *
如下所示,cmdlet 创建了一个具有多个使用者名称的新证书,如 DnsNameList
属性中所示。
创建具有特定有效期的证书
默认情况下,自签名证书的有效期为一年,这对于大多数用例来说已经足够了。但如果您在创建自签名证书时需要指定具体的有效期,可以添加 NotBefore
和 NotAfter
参数。
例如,要创建今天 NotBefore
和 24 个月后 NotAfter
有效的自签名证书,请在 PowerShell 中运行以下命令。
# Create a self-signed certificate in the local machine personal certificate store valid for 24 months and store the result in the $cert variable.
$cert = New-SelfSignedCertificate -DnsName localsite.com -NotAfter (Get-Date).AddMonths(24)
要确认新证书,请运行以下命令以显示证书的选择属性,包括开始日期和到期日期。
$cert | Select-Object -Property Subject,Thumbprint,NotBefore,NotAfter
从结果中可以看到,您现在拥有一个有效期为 24 个月的自签名证书。
克隆现有的自签名证书
假设您的自签名证书即将过期。如果您仍然需要该证书,那么合乎逻辑的操作是更新它。但没有直接的方法来更新证书。你做什么工作?从头开始创建新的自签名证书或克隆现有证书。
克隆旧证书使新证书继承旧证书的属性,但不包括公钥、指纹、序列号和到期日期。因此,克隆旧证书是更快的选择。
要克隆证书,请将 CloneCert
参数添加到 New-SelfSignedCertificate
命令中。请按照以下步骤操作:
1. 首先,找到您要克隆的证书。为此,请运行 Get-ChildItem
命令列出证书存储中的现有证书。在下面的代码片段中,PowerShell 正在搜索本地计算机的证书存储,查找主题以字符串 localsite.com
结尾的所有证书,并返回一些证书属性。
# Get all certificates whose Subject name is like localsite.com.
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*localsite.com"} | Select-Object Subject,DnsNameList,Thumbprint,NotBefore,NotAfter
如下所示,可能有多个证书与您搜索的主题名称相匹配。在这种情况下,请检查证书列表以确定要克隆哪个证书。做出决定后,复制证书的指纹。
2. 现在您已经确定了要克隆的证书并复制了其指纹,请运行以下命令来检索旧证书。确保将 Thumbprint
值更改为您在上一步中复制的指纹。
# Get the certificate and store it in the $certToClone variable
$certToClone = Get-Item Cert:\LocalMachine\My\
3. 接下来,通过运行带有 CloneCert
参数的 New-SelfSignedCertificate
克隆原始证书来创建新证书。
# Create cloned self-signed certificate
$cert = New-SelfSignedCertificate -CloneCert $certToClone
如果不指定 NotBefore
和 NotAfter
参数,新证书将与旧证书具有相同的有效期(即两年)。 NotBefore
值将是当前日期和时间减去十分钟。
或者,要为新证书指定不同的有效期,请运行相同的命令,但添加 NotAfter
参数。例如,要使证书的有效期为四年,请运行以下命令。
# Create cloned self-signed certificate valid for four years
$cert = New-SelfSignedCertificate -CloneCert $certToClone -NotAfter (Get-Date).AddYears(4)
4. 最后,运行以下命令来验证您创建的新证书。
# Display the cloned certificate properties
$cert | Select-Object Subject,DnsNameList,Thumbprint,NotBefore,NotAfter
如下所示,您现在已经克隆了自签名证书,其主题和备用名称与原始证书相同。指纹、开始日期和到期日期是新的。
创建代码签名证书
为了确保您的脚本或代码具有数字签名,您必须使用代码签名证书对脚本进行签名。 New-SelfSignedCertificate
cmdlet 也能够创建代码签名证书。
要创建自签名代码签名证书,请在 PowerShell 中运行下面的 New-SelfSignedCertificate
命令。 Type
参数指定创建 CodeSigningCert
证书类型。该证书的有效期为 24 个月。请注意,可以使用 NotAfter
参数指定特定的有效期。
# Create a self-signed code signing certificate valid for 24 months.
$cert = New-SelfSignedCertificate -Subject CodeSigningCert -NotAfter (Get-Date).AddMonths(24) -Type CodeSigningCert
生成代码签名证书后,运行以下命令以确认 EnhancedKeyUsageList
值显示证书的有效密钥用法为 Code Signing
。
$cert | Select-Object Subject,EnhancedKeyUsageList
创建文档加密证书
当您想要保护文档或电子邮件等内容免遭窥探时,加密是保护它们的一种方法。但首先,您需要一种用于文档加密的证书,您也可以使用 New-SelfSignedCertificate
cmdlet 创建该证书。
要创建文档加密证书,New-SelfSignedCertificate
cmdlet 需要一组特定的 KeyUsage
值。这些值是:
- 数据加密 - 该证书对于加密数据有效。
- KeyEncipherment - 该证书对于加密秘密/私钥是有效的。
- 密钥协议 - 该证书对于派生加密密钥有效,例如在椭圆曲线加密中。
此外,Type
参数值必须为 DocumentEncryptionCert
。
运行以下命令创建用于文档加密的自签名证书。该证书的有效期为两年。为了使命令更具可读性,下面的代码使用展开来定义参数值。
由于加密内容通常供个人使用,因此在当前用户个人证书存储中创建文档加密证书是合适的。这样做会将证书限制为当前用户(您)才能加密和解密内容。
# Define the certificate parameter values
$certSplat = @{
DnsName = 'DocEncCert'
KeyUsage = @('KeyEncipherment','DataEncipherment','KeyAgreement')
Type = 'DocumentEncryptionCert'
CertStoreLocation = 'Cert:\CurrentUser\My'
NotAfter = (Get-Date).AddYears(2)
}
# Create the self-signed document encryption certificate
$cert = New-SelfSignedCertificate @certSplat
接下来,要验证自签名证书对于代码签名是否有效,请运行以下命令以获取证书的 EnhancedKeyUsageList
值。
$cert | Select-Object Subject,EnhancedKeyUsageList
从下面的结果中可以看到,证书列出了Document Encryption
,这意味着该证书可用于文档加密。
现在您已拥有文档加密证书,您可以使用 Protect-CmsMessage
和 Unprotect-CmsMessage
cmdlet 加密和解密内容。
结论
本文旨在教您如何快速获取自签名证书以满足您的测试和开发需求。您学习了如何使用不同的参数并出于不同的目的创建自签名证书。
您可以探索本文未涵盖的更多参数。创建 S/MIME 证书来保护电子邮件或使用更强大算法的证书怎么样?您可能还想了解如何导出和导入这些证书。祝你好运!
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag