OpenSSL 生成 RootCA (根证书)并自签署证书(支持 IP 地址)
背景
某机房内部访问需要配置 HTTPS,网上找的一些证书教程都不是特别好,有些直接生成证书,没有根 CA 的证书导致信任不了 Ubuntu 机器,有些教程只有域名生成,没有 IP 生成,有些甚至报错。故发一个笔者在 Ubuntu 22.04 机器上测试正确可用的流程,这里使用 10.12.0.2 作为例子生成一个证书。
生成
生成根 CA 的私钥和证书
# 生成根 CA 的私钥
openssl genrsa -out rootCA.key 2048 # 使用私钥生成根 CA 的证书
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt
为
10.12.0.2生成私钥和证书请求文件(CSR)# 生成 10.12.0.2 的私钥
openssl genrsa -out 10.12.0.2.key 2048 # 使用私钥生成证书请求文件
openssl req -new -key 10.12.0.2.key -out 10.12.0.2.csr
创建证书扩展文件
为了确保为
10.12.0.2签名的证书能够用作服务器身份验证,需要为它创建一个扩展文件。创建一个名为v3.ext的文件,并添加以下内容:authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names [alt_names]
# 这里 IP 替换成 DNS 就可以签名域名了
IP.1 = 10.12.0.2
使用根 CA 的证书为
10.12.0.2签名证书openssl x509 -req -in 10.12.0.2.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out 10.12.0.2.crt -days 500 -sha256 -extfile v3.ext
此时文件夹内应该有以下文件:
rootCA.key- 根 CA 的私钥。rootCA.crt- 根 CA 的证书。10.12.0.2.key- 10.12.0.2 的私钥。10.12.0.2.csr- 10.12.0.2 的证书请求文件。10.12.0.2.crt- 由根 CA 签名的 10.12.0.2 的证书。
信任
Ubuntu
sudo cp rootCA.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
CentOS
sudo cp rootCA.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust
Windows
右键文件,选择安装证书,选择本地计算机,指定安装到受信任的根证书颁发机构,即可
使用
这里拿 ASP.NET CORE 无反代部署举例,复制 10.12.0.2.key 和 10.12.0.2.crt 文件到应用发布目录,之后在 appsettings.json 里加入或修改如下内容,并重启服务即可。
{
// 上面是其他内容
"Kestrel": {
"Endpoints": {
"Https": {
"Url": "https://*",
"Certificate": {
"Path": "./10.12.0.2.crt",
"KeyPath": "./10.12.0.2.key"
}
}
}
}
}
OpenSSL 生成 RootCA (根证书)并自签署证书(支持 IP 地址)的更多相关文章
- openssl生成iis需要的pfx格式的证书
合成.pfx证书 将私钥文件(server.key)和服务器crt证书文件(server.crt ),放到openssl安装目录的bin目录下. 控制台也进到此目录下,然后执行下面指令. openss ...
- Openssl生成根证书、服务器证书并签核证书
1.修改Openssl配置文件CA目录: cat /etc/pki/tls/openssl.cnf dir = /etc/pki/CA 2.生成根证书及私钥: #http://www.haiyun.m ...
- centos7.6使用openssl生成CA签署的证书个人实验笔记
准备:客户端centos6.10 服务端Centos7.6 实验:客户端生成证书请求,服务端颁发证书,最后吊销其中一个证书 1.先在服务端上的/etc/pki/CA/目录生成rsa的私钥: 2.在服 ...
- (15) openssl签署和自签署证书的多种实现方式
1.采用自定义配置文件的实现方法 1.1 自建CA 自建CA的机制:1.生成私钥:2.创建证书请求:3.使用私钥对证书请求签名. 由于测试环境,所以自建的CA只能是根CA. 所使用的配置文件如下: [ ...
- 使用 openssl 生成证书
一.openssl 简介 目前最流行的 SSL 密码库工具官网:https://www.openssl.org/source/ 构成部分 密码算法库 密钥和证书封装管理功能 SSL通信API接口 用途 ...
- win openssl 生成证书
第1步:生成私钥 有密码:openssl genrsa -des3 -out private.key 1024无密码:openssl genrsa -out private.key 1024 说明:生 ...
- centos7 openssl 生成证书给自己使用
Step1: centos7 系统自己生成证书 给自己签发不安全的域名证书 openssl genrsa - #生成ca根秘钥 是长度 openssl req - -key ca.key -out c ...
- OPENSSL生成SSL自签证书
OPENSSL生成SSL自签证书 目前,有许多重要的公网可以访问的网站系统(如网银系统)都在使用自签SSL证书,即自建PKI系统颁发的SSL证书,而不是部署支持浏览器的SSL证书. 支持浏览器的SSL ...
- openssl生成SSL证书的流程
SSL证书通过在客户端浏览器和Web服务器之间建立一条SSL安全通道(Secure socketlayer(SSL),SSL安全协议主要用来提供对用户和服务器的认证:对传送的数据进行加密和隐藏:确保数 ...
- 使用 openssl 生成证书(转)
一.openssl 简介 openssl 是目前最流行的 SSL 密码库工具,其提供了一个通用.健壮.功能完备的工具套件,用以支持SSL/TLS 协议的实现.官网:https://www.openss ...
随机推荐
- uniapp-chatgpt跨端仿ChatGPT实例|uniapp+vue3+pinia多端聊天模板
基于uniapp+vite4+pinia跨多端实现chatgpt会话模板Uniapp-ChatGPT. uni-chatgpt 使用uni-app+vite4+vue3+pinia+uview-plu ...
- 手机号码吉利数PHP检测算法代码,超级实用
手机号码吉利数理预测解读:将手机号码末尾的四个数字,先除以八十,再减去整数部分,只使用剩下的小数(小数点反面的数字)乘以八十,然后将所得结果,对表查阅,就知道吉凶.(换句话说就是余数)例如:手机尾号是 ...
- Mysql基础篇(一)之DDL、DML、DQL、DCL
一. SQL语句分类 SQL语句,根据其功能,主要分为四类:DDL.DML.DQL.DCL. 分类 全称 说明 DDL Data Definition Language 数据定义语言,用来定义数据对象 ...
- 基于.Net Core实现的飞书文档一键导出服务(支持多系统)
feishu-doc-export 一个支持Windows.Mac.Linux系统的飞书文档一键导出服务,仅需一行命令即可将飞书知识库的全部文档同步到本地电脑.导出速度嘎嘎快,实测700多个文档导出只 ...
- 用git bash 生成 hexo 博客文件,报错node: command not found
有git bash,也安装了node.js, 为什么在bash里面会说node: command not found? 电脑有段时间不能上网,下载了360系统急救箱,删了很多文件,包括一些exe文件, ...
- 解决php中通过exec调用python脚本报ModuleNotFoundError错误
背景 出于某些原因,我们有时会在PHP中通过exec来调用Python代码,有可能是某些功能只能用Python实现(或用Python实现比较方便),有可能是出于性能考虑(Python可以执行耗时任务) ...
- 烧死10亿脑细胞的SQL长啥样?
1 前言 今天在生产中碰到了一个让我十分费解的 SQL,十分有趣. 2 现象 SQL 很好复现,就是逻辑看起来有点唬人 postgres=# create table test(id1 int,id2 ...
- ip2location.py
import re import geoip2.database from tabulate import tabulate from matplotlib import pyplot as plt ...
- 删除 /tmp 目录下长时间未访问的文件
#!/bib/bash DIR=/tmp cd $DIR || { echo "Dir not Found: $Dir" exit } echo "Delete a fi ...
- XCTF-CGfsb
考察知识点 PWN.格式化字符串漏洞 题目链接 https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&am ...