目录

一、使用makecert命令生成

二、PowerShell 命令生成方式

确定你的打包应用的主体

使用 New-SelfSignedCertificate 创建证书

三、Openssl 生成方式

四、Window IIS生成证书

五、EKU (OID)扩展

六、参考


一、使用makecert命令生成

  1. 生成自签名证书。
  2. 以下命令行包含使用 makecert.exe 在 WinRM 主机上创建证书的示例语法。makecert.exe -r -pe -n "CN=host_name-3,O=organization_name" -e mm/dd/yyyy -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 certificate_name.cer
  3. 通过使用 Microsoft 管理控制台添加生成的证书。
    1. 运行 mmc.exe。
    2. 选择文件 > 添加/删除管理单元。
    3. 从可用管理单元列表中,选择证书,然后单击添加。
    4. 选择计算机帐户并单击下一步。
    5. 单击完成。
    6. 验证在控制台根 > 证书(本地计算机) > 个人 > 证书和控制台根 > 证书(本地计算机) > 受信任的根证书颁发机构 > 证书中安装了证书。
    7. 如果受信任的根证书颁发机构和个人文件夹中未安装证书,则必须手动安装。
  4. 使用正确的指纹和主机名创建 HTTPS 侦听器。
  5. 以下命令行包含用于创建 HTTPS 侦听器的示例语法。winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="host_name";CertificateThumbprint="certificate_thumbprint"}注:忽略证书指纹中的空格。
  6. 测试连接。
  7. 以下命令行包含用于测试连接的示例语法。winrs -r:https://host_name:port_number -u:user_name -p:password hostname

二、PowerShell 命令生成方式

确定你的打包应用的主体

若要使用证书给你的应用包签名,证书中的“主体”必须 匹配应用清单中的“发布者”部分。

例如,你应用的 AppxManifest.xml 文件中的“身份”部分应如下所示:

<Identity Name="Contoso.AssetTracker" Version="1.0.0.0" Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

使用 New-SelfSignedCertificate 创建证书

使用 New-SelfSignedCertificate PowerShell cmdlet 创建自签名证书。 New-SelfSignedCertificate 包含用于自定义的几个参数,但是鉴于本文目的,我们将侧重于创建可使用 SignTool 的简单证书。 有关更多示例和此 cmdlet 的使用,请参阅 New-SelfSignedCertificate。

基于上一示例中的 AppxManifest.xml 文件,你应该使用下面的语法创建证书。 在提升的 PowerShell 提示符中:

New-SelfSignedCertificate -Type Custom -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -KeyUsage DigitalSignature -FriendlyName "Your friendly name goes here" -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}")

请注意以下有关某些参数的详细信息:

  • KeyUsage: 此参数定义证书可用于什么。 对于自签名证书,此参数应设置为 DigitalSignature

  • TextExtension: 此参数包括以下扩展的设置:

    • EKU (扩展) :此扩展表示可能使用已认证的公钥的其他用途。 对于自签名证书,此参数应包含扩展字符串 "2.5.29.37={text}1.3.6.1.5.5.7.3.3", 指示证书将用于代码签名。

    • 基本约束:此扩展指示证书是否是证书颁发机构 (CA) 。 对于自签名证书,此参数应包含扩展字符串 "2.5.29.19={text}", 该字符串指示证书是最终实体 (而不是 CA) 。

运行此命令后,证书将被添加到本地证书存储中,如“-CertStoreLocation”参数中指定。 该命令的结果还将生成证书的指纹。

你可以使用以下命令在 PowerShell 窗口中查看你的证书:

 ls Cert:\LocalMachine\My

三、Openssl 生成方式

1、安装

地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

2、生成私钥-使用des3算法

openssl genrsa -des3 -out private-rsa.key 1024

会让输入私钥密码,最终生成private-rsa.key私钥文件,结果如下:

3、使用私钥文件生成证书申请文件

openssl req -new -x509 -key private-rsa.key -days 750 -out public-rsa.cer

过程中需要私钥密码,并且填入一些信息:

4、生成pfx即PKCS格式证书

openssl pkcs12 -export -name test-alias -in public-rsa.cer -inkey private-rsa.key -out user-rsa.pfx

四、Window IIS生成证书

1、若没有找到IIS 证书,先进行IIS服务安装

2、打开IIS管理器,打开服务器证书

3、根据提示创建自签证书

五、EKU (OID)扩展

增强型密钥用法(EKU)就是定义该证书的用途,由一串十进制数字组成,也称 Object ID或OID,常见的OID有:服务器验证: 1.3.6.1.5.5.7.3.1 (serverAuth),客户端验证: 1.3.6.1.5.5.7.3.2 (clientAuth),代码签名: 1.3.6.1.5.5.7.3.3 (codeSigning),电子邮件加密: 1.3.6.1.5.5.7.3.4 (emailProtection)等等。

六、参考

Passwordless WinRm Backdoor Based On Certification

OID description for 2.5.29.37 - Extended key usage

为程序包签名创建证书 - MSIX | Microsoft Docs

使用openssl创建https证书 - 云+社区 - 腾讯云

https://jingyan.baidu.com/article/37bce2be782daa1003f3a247.html

SSL生成证书的几种方式相关推荐

  1. 绕过安卓SSL验证证书的四种方式

    在此之前,移动端应用程序会直接忽略掉所有的SSL错误,并允许攻击者拦截和修改自己的通信流量.但是现在,很多热门应用程序至少会检查证书链是否是一个有效可信任的证书机构(CA)颁发的. 作为一名渗透测试人 ...

  2. 在 C# 中生成代码的四种方式——包括.NET 5中的Source Generators

    Microsoft在最新的C#版本中引入了Source Generator.这是一项新功能,可以让我们在代码编译时生成源代码.在本文中,我将介绍四种C#中的代码生成方式,以简化我们的日常工作.然后,您 ...

  3. json 生成html转换,根据json字符串生成Html的一种方式

    文章说明: 本文介绍了根据Json串生成Html的一种方式(只是简单实现了文本框,密码框,下拉框).只是觉得好玩才这样做,如果觉得没有任何价值,请忽略.不足指出希望各位大牛指点.后续将根据各位的指点继 ...

  4. Linux:生成core的几种方式

    Linux:生成core的几种方式 1.总结 在某些情况下,进程会生成core文件(核心转储),记录进程状态,帮助我们快速定位异常. 例如: 当进程异常时如段错误退出,可以分析结果core,查看调用栈 ...

  5. 【Pytest篇】pytest生成报告的几种方式

    使用Pytest生成测试报告的几种方式 1.生成Junitxml文件,可供后续jenkins持续集成使用 在cmd 命令行中执行如下命令 pytest test_login_dlz.py --juni ...

  6. 写一个静态HTML页面,直接写HTML代码和用JS动态生成代码,哪种方式要好

    如果写一个静态HTML页面,直接写HTML代码和用JS动态生成代码,哪种方式要好点?为什么? 不考虑人力因素(手写HTML太费时间排除),请从读取和解析或者其他的角度分析.谢谢 添加评论 分享 按投票 ...

  7. php 生成复杂json数据,生成json的几种方式

    这里是修真院后端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析后端知识/技能,本篇分享的是: [生成json的 ...

  8. Java读取证书的两种方式

    关于证书基础以及创建.查看.删除.导入.导出以及其他功能详解请参照:Java使用keytool创建CA证书 Java读取证书有两种方式 1.从文件中读取 public static void main ...

  9. https信任证书的三种方式

    苦逼的我调试AFNetworking发送https请求的bug ---------调试了一个上午,终于解决了 证书信任的过程: 证书的信任是通过代理的方式进行信任(NSURLConnection和NS ...

最新文章

  1. Excel生成报表之解决方案--设置单个单元格格式
  2. (转)基于即时通信和LBS技术的位置感知服务(一):提出问题及解决方案
  3. ajax 微信code获取_获取链接的参数,判断是否是微信打开,ajax获取数据
  4. 同时生成 Release版和Debug版DLL的方法
  5. k8s部署jenkins
  6. 计算机网络——大数据、物联网
  7. ICO 图标快速制作
  8. 读书、学习、工作和生活中收集的20条经典语录:21-40
  9. VS编程俄罗斯方块游戏
  10. matlab如何设置自变量,matlab中如何指定一个函数的自变量
  11. 网易杭研 java 校招_09网易杭研校园招聘面试题
  12. 科创人·知乎CTO李大海:技术服务内容、商业化依赖内容,曾被「呵呵」难到挠头
  13. Execution failed for task ':app:processDebugGoogleServices'. No matching client found for package
  14. C实现多项式F_2上的阶(线性反馈移位寄存器)
  15. 计算机老师 杂事多,有人说,老师忙,都忙在了教学之外的杂事上。你怎么看?...
  16. 等我怎么怎了,就如何如何
  17. ITOF vs DTOF
  18. [转]前端开发者不得不知道的41个常用的网站,因为这41个网站我成了别人眼中的巨佬(转载请删除括号里的内容)
  19. gmoj 6860. 【2020.11.14提高组模拟】鬼渊传说
  20. Flutter Icons图标库地址

热门文章

  1. Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)
  2. AttributeError: module ‘tushare‘ has no attribute ‘get_k_data‘报错解决方法
  3. 如何建立一个属于自己的网站(小白教程)
  4. neutron-server.service启动失败显示代理报错http://controller:9696/v2.0/agents.json
  5. Warning: Accessing non-existent property ‘cd‘ of module exports inside circular dependency
  6. 谈操作系统(linux内核)学习的重要性
  7. 一个程序员如何给LPL发弹幕加油
  8. Ebean报错java.lang.ClassCastException: com.project.model.xxx cannot be cast to com.project.model.xxx
  9. 【WSN定位】基于matlab灰狼算法优化无线传感器非测距定位【含Matlab源码 2008期】
  10. js调用打印机打印网页字体总是缩小一号的解决方法