openssl创建自签名证书

ops/2024/11/26 10:25:26/

原文地址:自签名证书 – 无敌牛

欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等

1 生成私钥

openssl genrsa -out server.key 2048

2 创建证书请求文件

openssl req -new -key server.key -out server.csr

3 用私钥和证书请求文件,生成签名文件

openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt


扩展 …

从私钥里提取公钥

openssl rsa -in server.key -pubout -out server.pub

检查秘钥是否有效,查看私钥信息

openssl pkey -in server.key -check

查看证书请求文件信息

openssl req -in server.csr -noout -text

查看证书信息

openssl x509 -in server.crt -noout -text

查看证书有效期

openssl req -in server.csr -noout -dates

证书验证

openssl verify -CAfile root-ca.crt server.crt

从网站提取证书文件,示例:

openssl s_client -connect www.madbull.site:443 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > /opt/xxx.perm

Let’s Encrypt 安装证书

需要安装 certbot 工具和 python3-certbot-nginx 插件

yum install certbot python3-certbot-nginx

需要提前把网站建好,certbot会在线生成私钥、证书、证书链和完整证书链,然后修改 nginx 的配置文件中对应域名的证书地址,最后做网页验证。

指令:certbot --nginx -d "www.madbull.site"


自己创建根证书,对其他服务授权,以及在linux环境,把根证书加入到系统信任列表。

1.1 创建根的私钥

openssl genrsa -out root-ca.key 2048

1.2 创建根证书

openssl req -x509 -new -nodes -key root-ca.key -sha256 -days 1024 -out root-ca.crt

2.1 创建服务的私钥

openssl genrsa -out server.key 2048

2.2 给服务创建证书请求文件

openssl req -new -key server.key -out server.csr

2.3 给服务颁发证书

openssl x509 -req -in server.csr -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -out server.crt -days 36500 -sha256

3.1 把根证书放到配置可信任的配置证书文件位置

cp root-ca.crt /etc/pki/ca-trust/source/anchors/

3.2 更新系统可信任的根证书

update-ca-trust extract

3.3 验证根证书是否已经在信任列表里

查看 /etc/ssl/certs/ca-bundle.trust.crt 文件中是否有 root-ca.crt 证书


添加多个主题替代名称(SAN)的方法参看:openssl颁发包含主题替代名的证书–SAN – 无敌牛


http://www.ppmy.cn/ops/136807.html

相关文章

opencv读写文件操作

读取图像文件 OpenCV 中使用cv2.imread()函数来读取图像文件。这个函数的第一个参数是图像文件的路径&#xff0c;第二个参数是一个可选的标志&#xff0c;用于指定读取图像的方式。示例代码&#xff1a; import cv2 # 以彩色模式读取图像&#xff08;这是默认模式&#xff09…

HTML实现 扫雷游戏

前言&#xff1a; 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块&#xff08;cube&#xff09;” 游戏&#xff0c;后经改编出现了 “rlogic” 游戏&#xff0c;玩家需为指挥中心探出安全路线避开地雷。在此基础上&#xff0c;开发者汤姆・安德森编写出了扫雷游戏的…

Python学习——猜拳小游戏

import random player int(input(“请输入&#xff1a;剪刀 0&#xff0c;石头 1&#xff0c;布2”)) computer random.randint(0,2)# print(“玩家输入的是%d&#xff0c;电脑输入的是%d” %(player,computer)) 用于测试 if (player 0) and (computer 0) or (player 1) a…

自由学习记录(23)

Lua的学习 table.concat(tb,";") 如果表里带表&#xff0c;则不能拼接&#xff0c;表里带nil也不能&#xff0c;都会报错 true和false也不可以&#xff0c;数字和字符串可以 if要和一个end配对&#xff0c;所以 if a>b then return true end end 两个end …

前端工程化18-邂逅Promise(待更新)

6、邂逅Promise 6.1、函数对象与实例对象 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>准备_函数对象与实例对象</title> </head> <body><script>/* 函数对象、实例对象…

Android 性能优化:内存优化(理论篇)

内存作为App程序运行最重要的资源之一&#xff0c;需要运行过程中做到合理的资源分配与回收&#xff0c;不合理的内存占用轻则使得用户应用程序运行卡顿、ANR、黑屏&#xff0c;重则导致用户应用程序发生 OOM&#xff08;out of memory&#xff09;崩溃。喜马直播随着近些年的业…

【手写一个spring】spring源码的简单实现--BeanPostProcessor(实现AOP)以及JDK动态代理/CGLIB动态代理

文章目录 BeanPostProcessor概念BeanPostProcessor接口中的两个方法BeanPostProcessor的实例化与注册BeanPostProcessor的执行时机实现AOP动态代理技术JDK动态代理&#xff1a;CGLIB动态代理&#xff1a; JDK动态代理和CGLIB动态代理的区别JDK动态代理CGLIB动态代理使用场景性能…

一个全面的Vue 3组件通信演示展示

✍️ 记录 一、Vue2 中组件通信方式 props: 实现父子组件、子父组件、甚至兄弟组件通信自定义事件: 可以实现子父组件通信全局事件总线$bus: 可以实现任意组件通信pubsub: 发布订阅模式实现任意组件通信vuex: 集中状态管理容器&#xff0c;实现任意组件通信ref: 父组件获取子…