使用PowerShell创建自签名证书

2023-12-21

我使用与此处找到的代码类似的代码来创建在 IIS 中使用的自签名证书:http://blogs.technet.com/b/vishalagarwal/archive/2009/08/22/generating-a-certificate-self-signed-using-powershell-and-certenroll-interfaces.aspx http://blogs.technet.com/b/vishalagarwal/archive/2009/08/22/generating-a-certificate-self-signed-using-powershell-and-certenroll-interfaces.aspx

工作正常,只是我想给它一个友好的名称,以便当我想将证书分配给动态创建的站点时更容易找到它。

任何人都知道如何更改上述内容以设置友好名称(我已经尝试过看似显而易见的无济于事)。

有更好的方法通过 PowerShell 创建证书而不提示用户输入信息吗?

我正在使用的脚本的后续操作 - 基于上面的 url,但变成了 cmdlet:

function Add-SelfSignedCertificate
{
    [CmdletBinding()]
    param
    (
            [Parameter(Mandatory=$True, ValueFromPipelineByPropertyName=$True)]
            [Alias('cn')]
            [string]$CommonName
    )

    $name = new-object -com "X509Enrollment.CX500DistinguishedName.1"
    $name.Encode("CN=$CommonName", 0)

    $key = new-object -com "X509Enrollment.CX509PrivateKey.1"
    $key.ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
    $key.KeySpec = 1
    $key.Length = 1024
    $key.SecurityDescriptor = "D:PAI(A;;0xd01f01ff;;;SY)(A;;0xd01f01ff;;;BA)(A;;0x80120089;;;NS)"
    $key.MachineContext = 1
    $key.Create()

    $serverauthoid = new-object -com "X509Enrollment.CObjectId.1"
    $serverauthoid.InitializeFromValue("1.3.6.1.5.5.7.3.1")
    $ekuoids = new-object -com "X509Enrollment.CObjectIds.1"
    $ekuoids.add($serverauthoid)
    $ekuext = new-object -com "X509Enrollment.CX509ExtensionEnhancedKeyUsage.1"
    $ekuext.InitializeEncode($ekuoids)

    $cert = new-object -com "X509Enrollment.CX509CertificateRequestCertificate.1"
    $cert.InitializeFromPrivateKey(2, $key, "")
    $cert.Subject = $name
    $cert.Issuer = $cert.Subject
    $cert.NotBefore = get-date
    $cert.NotAfter = $cert.NotBefore.AddDays(90)
    $cert.X509Extensions.Add($ekuext)
    $cert.Encode()

    $enrollment = new-object -com "X509Enrollment.CX509Enrollment.1"
    $enrollment.InitializeFromRequest($cert)
    $certdata = $enrollment.CreateRequest(0)
    $enrollment.InstallResponse(2, $certdata, 0, "")
}

它可能对您的特定用途没有帮助,但 Windows 8.1 和 Server 2012 中安装了一个新的 Powershell CmdLet,它非常快速且易于使用:

New-SelfSignedCertificate [-CertStoreLocation <String> ] [-CloneCert <Certificate> ] [-DnsName <String> ] [-Confirm] [-WhatIf] [ <CommonParameters>]

更多详情可在这找到:https://learn.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps https://learn.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps

在我的使用中,证书的友好名称始终设置为 CmdLet 中指定的第一个 DnsName。

将证书放置在本地计算机的个人存储中的示例:

New-SelfSignedCertificate -CertStoreLocation cert:\LocalMachine\My -DnsName www.example.com

注意:Powershell 必须以管理员权限启动才能正常工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PowerShell创建自签名证书 的相关文章

  • EWS - 访问共享日历项目/约会

    我正在尝试获取共享日历的所有项目 我已关注EWS 访问所有共享日历 https stackoverflow com questions 23766747 ews access all shared calendars 23773834 23
  • Powershell,如何添加共享文件夹的权限

    我有以下创建共享文件夹的代码 if Test Path c myFolder New Item Path c myFolder ItemType Directory If GET WMIOBJECT Win32 Share Filter N
  • 当存在另一个参数时在 PowerShell 中需要参数

    到目前为止我读到的所有内容都告诉我这应该有效 这是一个用于自动从 AD 帐户转出的脚本 我希望它的工作方式是 如果设置了 TransferHomeDrive 开关 那么它将需要旧服务器和新服务器的名称 我相信我应该能够通过参数集来做到这一点
  • 在 iOS 上提升 Asio SSL 认证

    我正在尝试在 iOS 上使用 Boost Asio 并且已经解决了所有问题 但如何检查我正在连接的服务器的证书 如何使用 Boost Asio 在 iOS 中检查连接服务器的证书 在我的另一个答案中 您可以看到一个简单的 SSL 客户端 在
  • Chrome AutoSelectCertificateForUrls 主题过滤器

    目前遇到与此相同的问题但未得到答复从 2016 年 8 月开始 希望在另一个字段 例如主题 上过滤自动选择的证书 Chromium 文档 https www chromium org administrators policy list 3
  • PowerShell 中的 COM 接口包装?

    我在 C 中有以下代码 我尝试将其移植到 PowerShell 但我不知道如何移植这个演员 ISkypeEvents Event skype CallStatus CallStatusHandler 如果我只是在 PowerShell 控制
  • Heroku:SSL 端点 - subjectAltName 与 www.mydomain.com 不匹配

    我刚刚设置了我的第一个需要 ssl 的应用程序 这是 RoR 应用程序 托管在 Heroku 上 我已将 SSL Endpoint 插件添加到我的应用程序中 我从 DNSimple 购买了 SSL 证书 然后按照这些说明进行操作 https
  • 输入屏蔽密码

    我从其他帖子中拼凑了一个简单的例子 CmdletBinding DefaultParameterSetName Secret Param Parameter Mandatory True string FileLocation Parame
  • C# 通用应用平台中证书的公钥

    在本文中https blogs windows com buildingapps 2015 10 13 create more secure apps with less effort 10 by 10 https blogs window
  • 使用以 some-pattern 开头并以 other-pattern 结尾的搜索模式过滤 powershell 输出

    我受到 bash 命令行的启发 其中sed输出以 BEGIN CERTIFICATE 开头并以 END CERTIFICATE 结尾的搜索模式 openssl s client connect www domain com 443 show
  • powershell 将文件添加到 zip

    我正在尝试使用 powershell 将文件添加到 zip 文件 我可以创建 zip 文件 但无法弄清楚如何将我的文件添加到其中 我在用着 zipfilename c cwRsync backup zip file c cwRsync ba
  • 有哪些基于对象的 shell?

    我打算写一个面向对象的shell 基于Python 我已经有很多想法了 但在实现它之前 我想通过一些现有的 shell 来激发我的灵感 我所说的面向对象的基本意思是 参数不仅仅是字符串数组 而且是对象数组 返回值也是一个对象 不仅有 std
  • “Connect-MsolService”未被识别为 cmdlet 的名称

    PSCommand commandToRun new PSCommand commandToRun AddCommand Connect MsolService commandToRun AddParameter Credential ne
  • 启动 psexec 后获取进程 ID

    我有一个使用 psexec 在远程计算机上调用记事本的脚本 有什么办法可以在启动后获取进程ID吗 这是我所拥有的 PCname MyPC SessionID 2 Program Notepad exe FilePath C temp Fil
  • Powershell 脚本无法从 SCCM 正常运行 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 通过powershell脚本在WSL中运行bash脚本

    我正在尝试运行一个启动 WSL ubuntu1804 终端的脚本 然后在该终端中运行 bash 脚本 ubuntu1804 exe cd test directory node server js 然而 在第一个命令之后 终端打开 其他两个
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • Powershell 新的 ScheduledTaskSettingsSet

    我尝试添加新的ScheduledTaskSettingsSet https technet microsoft com en us library jj649824 v wps 630 aspx具有自定义设置 根据 Technet 有可能的
  • 对 CSV 文件中的列进行分组并连接另一列的值

    我刚刚开始使用 PowerShell 在任何地方都找不到这个问题的答案 尝试编写一个脚本来导入 CSV 文件并搜索该文件以查看是否有任何名称相同 如果名称相同 我想将所有这些值写在同一行上 并且只显示名称一次 例如 Name Number
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL

随机推荐