前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >自定义根证书颁发机构 CA 生成自签名证书

自定义根证书颁发机构 CA 生成自签名证书

作者头像
五月君
发布于 2020-11-04 06:45:50
发布于 2020-11-04 06:45:50
4.3K00
代码可运行
举报
文章被收录于专栏:Nodejs技术栈Nodejs技术栈
运行总次数:0
代码可运行

本文为使用过程中的一个工具记录,可实现在本地开启一个 HTTPS 服务器用于开发或测试。

前面有写过使用 Node.js 搭建 HTTPS 服务器 其中的自签名生成证书方式比较简单,既充当 HTTPS 根证书的角色也充当了用户的角色,本文我们会先创建一个 CA 根证书,再创建一个由 CA 根证书签名的自定义证书。

本文从以下几个方面讲解:

  • 创建自己的自定义证书颁发机构 CA
  • 使用 CA 根证书签名服务器证书
  • 在 Node.js 服务器中配置证书
  • 添加根证书到本地计算机的受信任根存储中

创建自己的自定义证书颁发机构 CA

  • 生成私钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openssl ecparam -out ca.key -name prime256v1 -genkey
  • 生成证书请求文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openssl req -new -sha256 -key ca.key -out ca.csr    

# 以下为需要输入的交互信息
Country Name (2 letter code) []:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) []:BeiJing
Organization Name (eg, company) []:Node.js
Organizational Unit Name (eg, section) []:Node.js
Common Name (eg, fully qualified host name) []:test.ca.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:abc123***
  • 生成根证书
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openssl x509 -req -sha256 -days 365 -in ca.csr -signkey ca.key -out ca.crt

使用 CA 根证书签名服务器证书

  • 生成私钥
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openssl ecparam -out server.key -name prime256v1 -genkey
  • 生成证书请求文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openssl req -new -sha256 -key server.key -out server.csr

# 注意下面服务器证书的 Common Name 不能与上面颁发者 CA 的 Common Name 一样
Country Name (2 letter code) []:CN
State or Province Name (full name) []:ShangHai
Locality Name (eg, city) []:ShangHai
Organization Name (eg, company) []:Node.js
Organizational Unit Name (eg, section) []:Node.js
Common Name (eg, fully qualified host name) []:test.https.com
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:abc123***
  • 使用 CA 的根证书为服务器证书签名
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ openssl x509 -req -in server.csr -CA  ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256

# 成功之后有以下提示
Signature ok
subject=/C=CN/ST=ShangHai/L=ShangHai/O=Node.js/OU=Node.js/CN=test.https.com
Getting CA Private Key

服务端证书中使用到的域名是我们自己定义的,需要在本地 hosts 文件做映射,如果不知道为什么要修改和该如何修改的参考文章 DNS 域名解析过程?github.com/qufei1993/http-protocol/blob/master/docs/dns-process.md

  • 证书文件列表

完成之后可以看到如下文件,server.crt 是服务器的证书文件,ca.crt 就是我们创建的根正书。

在 Node.js 服务器中配置证书

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const express = require('express');
const https = require('https');
const fs = require('fs');
const app = express();
const PORT = 8443;
const options = {
  key: fs.readFileSync('./cert/server.key'),
  cert: fs.readFileSync('./cert/server.crt')
};

https.createServer(options, app)
  .listen(PORT, () => console.log(`App listening on port ${PORT}!`));

app.get('/', (req, res) => res.send('Hello World!'));

此时在 Chrome 浏览器中仍无法访问,至少在 Chrome 85.0.4183.121 是这样的,浏览器中打开证书文件也显示的证书是不受信任的。 为了解决这个问题,继续往下看。

添加根证书到本地计算机的受信任根存储中

找到我们刚生成的根证书文件,双击打开。

得到如下提示,是因为系统提示新根证书应添加到当前用户下,这样就不会因为测试去影响其它用户,系统根证书是不建议修改的,这会对当前计算的所有用户生效,另外 Mac 中也是不能修改的。

image.png

按照以下步骤添加根证书,修改证书为信任,最后会需要用到密码进行确认

重新打开链接,是有提示的,我们可以继续前往访问,另外证书的状态也显示为了有效。

Reference

  • support.apple.com/zh-cn/guide/keychain-access/kyca2431/mac
  • configure-the-certificate-in-your-web-servers-tls-settings

- END -

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

本文分享自 Nodejs技术栈 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Windows 2003 iis6 网站打不开,无法显示该页 找不到服务器错误解决方案
首先,服务器能远程连上,可ping通,说明网络没有问题 看IIS Log,在errorlog中发现大量的 Connections_Refused 错误 2012-07-26 06:36:50 - - - - - - - - - 2_Connections_Refused - 2012-07-26 06:36:55 - - - - - - - - - 10_Connections_Refused - 通过搜索,发现了微软官方解释: 如果非页面缓冲的池内存小于 20 兆字节 (MB) 为服务器上
JadePeng
2018/03/12
2.1K0
常见的windows下无文件落地攻击手法
传统的恶意软件(例如.exe)攻击感染一个系统之前会把恶意文件(例如exe)复制到目标磁盘中并修改注册表并连接到此文件来达到一个长期隐藏的目的,无文件落地攻击是指即不向磁盘写入可执行文件,而是以脚本形式存在计算机中的注册表子项目中,以此来躲避杀软的检测,那么绕过了传统防病毒(AV)寻找被保存到磁盘上的文件并扫描这些文件以确定它们是否恶意的查杀方法。
黑白天安全
2021/03/16
6.2K0
常见的windows下无文件落地攻击手法
【免杀】certutil工具bypass杀软
好久没更新文章了,前段时间在忙着毕设、考试等等诸多事宜。恰逢昨天在月总群里突然有人在window写shell的话题中聊到了certutil这个工具,且讨论起了些bypass的手段。索性今天写下这个文章跟各位bro们共同学习一下,虽然下文所展示的手段比较easy,但是耐不住他好用呀~~~。了解过certutil工具的师傅建议直接到0x02
YanXia
2024/05/26
3820
【免杀】certutil工具bypass杀软
NSA工具包实战--32位XP系统(MS17-010)
近期因为工控安全大赛的原因,遇到了32系统存在17-010用matesploit无法利用的缘故。目前斗哥的metasploit v4.17.2-dev只支持win7x64、win2008x64、win8x64这几种系统的Getshell方式。本文记录斗哥在实际场景中遇到的问题,以及学到的一些关于后渗透的小技巧。
漏斗社区
2018/09/29
2.2K0
NSA工具包实战--32位XP系统(MS17-010)
Windows中配置NTP时间服务器
2、在命令提示符处,键入以下命令以重新启动 Windows 时间服务,然后按 Enter:
Lucifer三思而后行
2021/08/17
20.8K0
Windows中配置NTP时间服务器
内网渗透之内网权限维持
随着企业信息化程度的加深,内网环境逐渐成为攻击者的关注的重点目标,在内网渗透的过程中权限维持是不可或缺的关键环节之一,它往往决定了攻击者能否在目标系统中长时间潜伏,获取敏感信息或者造成更大范围的破坏。本文旨在深入探讨内网渗透中的权限维持技术,包括其基本概念、常见手段以及防御措施
Al1ex
2024/08/20
2880
内网渗透之内网权限维持
rpc服务器不可用 dcom 无法使用任何配置的协议与计算机,如何修复Windows上的“RPC服务器不可用”错误?…
大家好,又见面了,我是你们的朋友全栈君。 问题:如何修复Windows上的“RPC服务器不可用”错误? 有几次我的计算机上出现“RPC服务器不可用”弹出窗口。我不确定它是什么?我该怎么办这个错误? 方
全栈程序员站长
2022/09/03
9.5K0
rpc服务器不可用 dcom 无法使用任何配置的协议与计算机,如何修复Windows上的“RPC服务器不可用”错误?…
干货 | Certutil在渗透中的利用和详解
certutil.exe 是一个合法Windows文件,用于管理Windows证书的程序。
HACK学习
2021/07/21
6.4K0
PetitPotam – NTLM 中继到 AD CS
在企业环境中部署 Active Directory 证书服务 (AD CS) 可以允许系统管理员利用它在不同目录对象之间建立信任。但是,它可能允许红队操作员对 AD CS 的 Web 界面进行 NTLM 中继攻击,以破坏网络。Web 界面用于允许用户获取证书(Web 注册),通过 HTTP 协议,不支持签名并接受 NTLM 身份验证。
Khan安全团队
2022/01/06
1.4K0
物理机转虚拟机(P2V)概述、操作方法及生产环境经验总结
P2V即物理机转虚拟机,要求将物理机原封不动的转化成虚拟机,保持文件系统、任何文件都不发生变化。
力哥聊运维与云计算
2019/06/28
14.3K3
物理机转虚拟机(P2V)概述、操作方法及生产环境经验总结
Win11彻底关闭Defender(包括禁用、删除Defender服务和文件夹)
一般是不建议禁止defender自动更新或者彻底关闭Defender的,但如果你有其他替代的安全方案了,觉得defender有干扰业务隐患,想干掉,那这篇文档非常适用。耗费了不少心血在server2016-2022和win10、win11上对比实践。
Windows技术交流
2023/05/26
20.5K0
“奇幻熊”(APT28)组织最新攻击
近日腾讯御见威胁情报中心在监测Fancy Bear“奇幻熊”组织的攻击活动过程中,发现了其使用的最新攻击样本。下文将详细披露该组织的攻击手法,和各企业一起共同抵御此类高级攻击。 0x1 概况 “奇幻熊”(Fancy Bear,T-APT-12)组织,也被称作APT28, Pawn Storm, Sofacy Group, Sednit或STRONTIUM,是一个长期从事网络间谍活动并与俄罗斯军方情报机构相关的APT组织,从该组织的历史攻击活动可以看出,获取国家利益一直是该组织的主要攻击目的。据国外安全公司报
FB客服
2018/02/23
1.8K0
“奇幻熊”(APT28)组织最新攻击
windows本地连接内容为空,有线网卡驱动装不上,黄色感叹号
本人最近淘了ThinkPad二手笔记本 X250、T450给小孩练习指法用,这2款笔记本硬件大致一样,先在X250上做好系统和调优设置,然后进行了Ghost备份,通过网线直连2台笔记本想快速传输几十G大的.gho文件从X250传到T450,结果发现网速只有100Mbps。发现得这样设置:
Windows技术交流
2024/03/25
2480
哈希生成与文件验证
描述:certutil用于备份证书服务下载查看缓存,管理Windows命令通过文件生成并显示加密哈希生成Hashfile,MD5,SHA1,SHA256,并且可以校验文件MD5/SHA1值等 更多操作说明见https://technet.microsoft.com/zh-cn/library/cc755341(v=ws.10).aspx
全栈工程师修炼指南
2020/10/26
1.5K0
卸载symantec AntiVirus Client客户端,要求输入密码。。。。
大家好,又见面了,我是你们的朋友全栈君。本文只针对 Windows NT/2000/XP。对于 Windows 95/98/ME,请参阅文章: 如何手动卸载用于 Windows 95/98/Me 的 Norton AntiVirus 企业版 7.x 客户端。
全栈程序员站长
2022/08/31
2.5K0
【重学 MySQL】五、MySQL 的卸载
删除MySQL注册表项:在注册表编辑器中,导航到以下路径(路径可能因版本和安装方式而异):
用户11332765
2024/10/28
2180
【重学 MySQL】五、MySQL 的卸载
windows权限维持(二)
在一般用户权限下,通常是将要执行的后门程序或脚本路径填写到如下注册表的键值中HKCU\Software\Microsoft\Windows\CurrentVersion\Run,键名任意。普通权限即可运行
鸿鹄实验室
2021/04/15
1.6K0
windows权限维持(二)
利用黄金证书劫持域控
域控渗透最常见的域持久性技术之一是黄金票据攻击,它涉及使用“ krbtgt ”的 NTLM 哈希创建 kerberos 票证。但是在部署了 Active Directory 认证服务 (AD CS) 的服务器的域中,可能会在发生入侵时被滥用以实现域持久性。通过窃取 CA 证书的私钥,红队可以伪造和签署证书以用于身份验证。在部署 Active Directory 证书服务 (AD CS) 期间,域中默认启用基于证书的身份验证。因此,需要将这些系统视为第 0 层资产并得到适当保护。
IRTeam-工业安全
2022/05/10
2K0
利用黄金证书劫持域控
内网渗透-活动目录利用方法
https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/acl-persistence-abuse
亿人安全
2024/08/30
2600
内网渗透-活动目录利用方法
常规安全检查阶段 | Windows 应急响应
如果应急响应过程中允许,使用杀毒程序进行全盘杀毒肯定非常有帮助的,目前很多企业都有自己的终端管控程序,其中部分自带病毒库和杀毒功能,如果允许可以考虑异构排查
意大利的猫
2024/02/05
1.5K0
常规安全检查阶段 | Windows 应急响应
推荐阅读
相关推荐
Windows 2003 iis6 网站打不开,无法显示该页 找不到服务器错误解决方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档