Linux生成自签证书【Nginx】
👨🎓博主简介
🏅CSDN博客专家
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 1. 安装 OpenSSL
- 2. 生成私钥
- 3. 生成证书签名请求 (CSR)
- 4. 生成自签证书
- 5. 验证证书
- 6. 移除私钥密码(可选)
- 7. 使用证书
- 8. 页面访问展示
- 9. 总结
1. 安装 OpenSSL
首先检查是否安装了Openssl,在服务器执行:
openssl version

如果没有就是系统未安装 OpenSSL,可以通过以下命令安装:
- Debian/Ubuntu操作系统:
sudo apt-get install openssl -y
- CentOS/RHEL操作系统:
sudo yum install openssl -y
2. 生成私钥
使用以下命令生成一个 2048 位的 RSA 私钥:
私钥名称可自己定义,一般是以域名为命名。
private.key
openssl genpkey -algorithm RSA -out private.key -aes256
系统会提示设置私钥的密码。

3. 生成证书签名请求 (CSR)
使用以下命令生成 CSR:
同样,如果私钥名称已修改,这里也需要修改一下,csr名称也可以修改,一般也是以域名为命名。
private.key,csr.csr
openssl req -new -key private.key -out csr.csr
系统会提示需要输入私钥的密码,还有提示输入国家、省份、城市、组织等信息。

4. 生成自签证书
使用以下命令生成自签证书:
同样,如果私钥名称、证书签名名称已修改,这里也需要修改一下,crt名称也可以修改,一般也是以域名为命名。
private.key,csr.csr,certificate.crt
openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
-days 365 表示证书有效期为 365 天。
会提示输入一下私钥密码;

5. 验证证书
使用以下命令验证证书内容:
openssl x509 -in certificate.crt -text -noout

出现这些代表自签证书已经配置成功,生成完共有三个文件【crt:自签证书、csr:证书签名信息、key:私钥】。

6. 移除私钥密码(可选)
如果不想每次使用私钥都输入密码,可以移除密码:
openssl rsa -in private.key -out private.key
7. 使用证书
生成的 certificate.crt 和 private.key 可用于配置 HTTPS 服务器等场景,一般用于Nginx。
Nginx配置ssl证书如下:
server {listen 443 ssl;server_name 域名;ssl_certificate /usr/local/nginx/conf/ssl/certificate.crt; # 或者是pem文件ssl_certificate_key /usr/local/nginx/conf/ssl/private.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root html;index index.html index.htm;}}
8. 页面访问展示
页面访问会提示不安全的,可以点击高级、继续访问

可以查看证书详情:


9. 总结
通过以上步骤,可以在 Linux 系统上生成自签证书。
自签证书仅适用于测试和内部环境,在生产环境中建议使用受信任的证书颁发机构(CA)签发的证书。
自签证书名称也可以在执行完所有的命令之后,mv 重命名证书名称。
-
命令解析:
-
生成私钥命令
openssl genpkey -algorithm RSA -out private.key -aes256
opensslOpenSSL 是一个开源的工具包,用于实现 SSL/TLS 协议以及加密算法。它广泛用于生成密钥、证书、加密数据等操作。
genpkey这是 OpenSSL 的一个子命令,用于生成私钥(Private Key)。
genpkey是一个通用的私钥生成命令,支持多种加密算法(如 RSA、ECDSA 等)。
-algorithm RSA指定生成的密钥类型为 RSA(Rivest-Shamir-Adleman)。RSA 是一种非对称加密算法,广泛用于加密通信和数字签名。它基于大整数分解的数学难题,具有较高的安全性。
-out private.key指定生成的私钥文件保存路径和文件名。这里将私钥保存为
private.key文件。私钥文件是极其重要的,它用于解密数据或生成数字签名,必须妥善保管,避免泄露。
-aes256这个选项表示对生成的私钥文件进行加密保护,加密算法使用 AES-256。AES-256 是一种对称加密算法,具有较高的安全性。通过加密私钥文件,可以防止私钥被未经授权的人员直接读取。
- 当运行这条命令时,OpenSSL 会提示用户输入一个密码(passphrase)。这个密码将用于加密私钥文件。只有输入正确的密码,才能解密并使用私钥。
- 生成证书签名请求命令
openssl req -new -key private.key -out csr.csr
openssl req
openssl req是 OpenSSL 的一个子命令,用于生成和处理证书签名请求(CSR)。CSR 是一个文件,其中包含公钥、身份信息(如域名、组织信息等)以及签名信息,用于向证书颁发机构(CA)申请数字证书。
-new这个选项表示生成一个新的 CSR。它会启动一个交互式流程,提示用户输入证书相关的身份信息。
-key private.key指定用于生成 CSR 的私钥文件路径。私钥文件
private.key中包含公钥部分,CSR 中的公钥就是从这个私钥文件中提取的。私钥用于对 CSR 中的内容进行签名,确保 CSR 的完整性和真实性。
-out csr.csr指定生成的 CSR 文件的保存路径和文件名。CSR 文件将包含公钥和身份信息,并且通过私钥签名。生成的
csr.csr文件可以提交给证书颁发机构(CA)进行签名,生成最终的数字证书。执行过程
当运行这条命令时,OpenSSL 会提示用户输入证书相关的身份信息,包括以下内容:
- Country Name ©:国家代码,如 CN(中国)、US(美国)。
- State or Province Name (ST):省份或州。
- Locality Name (L):城市或地区。
- Organization Name (O):组织名称。
- Organizational Unit Name (OU):组织单位名称(如部门名称)。
- Common Name (CN):通用名称,通常是域名(如
www.example.com),对于服务器证书,CN 应该是服务器的域名。- Email Address:联系邮箱地址。
- Challenge Password:挑战密码(可选,用于某些特定用途)。
- Optional Company Name:可选的公司名称。
这些信息将被包含在 CSR 中,并通过私钥进行签名。生成的 CSR 文件是一个文本文件,通常以
-----BEGIN CERTIFICATE REQUEST-----和-----END CERTIFICATE REQUEST-----作为开头和结尾。
- 生成自签证书命令
openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt
openssl x509
openssl x509是 OpenSSL 的一个子命令,用于处理 X.509 证书。它可以用于查看证书内容、验证证书、生成自签名证书等操作。
-req这个选项表示处理一个证书签名请求(CSR)。它告诉 OpenSSL,输入文件是一个 CSR,而不是其他类型的文件(如证书或私钥)。
-days 365指定生成的证书的有效期为 365 天。数字证书都有一个有效期,超过有效期后,证书将不再被信任。你可以根据需要调整这个值,例如
-days 730表示有效期为两年。
-in csr.csr指定输入的 CSR 文件路径。这个 CSR 文件通常是由前面的
openssl req命令生成的,包含了公钥和身份信息。
-signkey private.key指定用于签名的私钥文件路径。这个私钥文件必须与生成 CSR 时使用的私钥相同。自签名证书的签名过程是使用私钥对证书内容进行签名,以证明证书的完整性和真实性。
-out certificate.crt指定生成的证书文件的保存路径和文件名。生成的证书文件
certificate.crt是一个 X.509 格式的证书,可以用于 SSL/TLS 服务器或其他需要证书的场景。
- 验证证书命令
openssl x509 -in certificate.crt -text -noout
这条命令是使用 OpenSSL 工具查看一个 X.509 数字证书的详细内容,而不输出证书本身。以下是命令的详细解析:
openssl x509
openssl x509是 OpenSSL 的一个子命令,用于处理 X.509 证书。它可以用于查看证书内容、验证证书、生成自签名证书等操作。
-in certificate.crt指定输入的证书文件路径。这里指定要查看的证书文件为
certificate.crt。
-text这个选项表示以文本形式输出证书的详细内容。它会显示证书中的所有字段和相关信息,包括:
- 证书版本(Version)
- 序列号(Serial Number)
- 签名算法(Signature Algorithm)
- 颁发者(Issuer)
- 有效期(Validity)
- Not Before(生效时间)
- Not After(过期时间)
- 主题(Subject)
- 公钥信息(Subject Public Key Info)
- 扩展信息(Extensions)(如果有)
-noout这个选项表示不输出证书本身的内容(即不输出证书的 PEM 格式内容)。通常,如果不使用
-noout,命令会输出证书的 PEM 内容(以-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----为开头和结尾)。使用-noout可以避免输出这些内容,只显示证书的详细信息。
- 移除私钥密码命令
openssl rsa -in private.key -out private.key
openssl rsa
openssl rsa是 OpenSSL 的一个子命令,专门用于处理 RSA 私钥。它可以用于查看私钥信息、转换私钥格式、解密加密的私钥等操作。
-in private.key指定输入的私钥文件路径。这里表示从文件
private.key中读取 RSA 私钥。
-out private.key指定输出的私钥文件路径。这里表示将处理后的私钥重新写入到文件
private.key中。
相关文章:
Linux生成自签证书【Nginx】
👨🎓博主简介 🏅CSDN博客专家 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入!…...
网络安全 | 加密技术揭秘:保护数据隐私的核心
网络安全 | 加密技术揭秘:保护数据隐私的核心 一、前言二、对称加密技术2.1 原理2.2 优点2.3 缺点2.4 应用场景 三、非对称加密技术3.1 原理3.2 优点3.3 缺点3.4 应用场景 四、哈希函数4.1 原理4.2 优点4.3 缺点4.4 应用场景 五、数字签名5.1 原理5.2 优点5.3 缺点5…...
使用服务器部署DeepSeek-R1模型【详细版】
文章目录 引言deepseek-r1IDE或者终端工具算力平台体验deepseek-r1模型总结 引言 在现代的机器学习和深度学习应用中,模型部署和服务化是每个开发者面临的重要任务。无论是用于智能推荐、自然语言处理还是图像识别,如何高效、稳定地将深度学习模型部署到…...
DirectX11 With Windows SDK--02 顶点/像素着色器的创建、顶点缓冲区
Direct3D 11 总结 —— 4 绘制三角形_direct绘制三角形-CSDN博客 DirectX11 With Windows SDK--02 顶点/像素着色器的创建、顶点缓冲区 - X_Jun - 博客园 练习题 粗体字为自定义题目 尝试交换三角形第一个和第三个顶点的数据,屏幕将显示什么?为什么&…...
Continue 与 CodeGPT 插件 的对比分析
以下是 Continue 与 CodeGPT 插件 的对比分析,涵盖功能定位、适用场景和核心差异: 1. 功能定位 工具核心功能技术基础Continue专注于代码自动补全和上下文感知建议,支持多语言,强调低延迟和轻量级集成。基于本地模型或轻量级AI&a…...
第二次连接k8s平台注意事项
第二次重新打开集群平台 1.三台机子要在VMware打开 2.MobaBXterm连接Session 3.三个机子docker重启 systemctl restart docker4.主节点进行平台链接 docker pull kubeoperator/kubepi-server[rootnode1 home]# docker pull kubeoperator/kubepi-server [rootnode1 home]# # 运…...
Ruby Dir 类和方法详解
Ruby Dir 类和方法详解 引言 在Ruby编程语言中,Dir类是一个非常有用的工具,它允许我们与文件系统进行交互,如列出目录内容、检查文件是否存在等。Dir类提供了多种方法,使得文件系统的操作变得简单且高效。本文将详细介绍Ruby中的…...
Mybatis篇
1,什么是Mybatis ( 1 )Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁…...
三维粒子滤波(Particle Filter)MATLAB例程,估计三维空间中匀速运动目标的位置(x, y, z),提供下载链接
三维粒子滤波(Particle Filter)MATLAB例程,估计三维空间中匀速运动目标的位置(x, y, z) 文章目录 介绍功能运行结果代码介绍 本 MATLAB 代码实现了三维粒子滤波( P a r t i c l e F i l t e...
WebAssembly:前后端开发的未来利器
引言 在互联网的世界里,前端和后端开发一直是两块重要的领域。而 JavaScript 长期以来是前端的霸主,后端则有各种语言诸如 Java、Python、Node.js、Go 等等。然而,近年来一个名为 WebAssembly (Wasm) 的技术正在逐渐改变这一格局。它的高性能…...
设计模式Python版 享元模式
文章目录 前言一、享元模式二、享元模式示例 前言 GOF设计模式分三大类: 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。结构型模式:关注类和对象之间的组合&…...
深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术
深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术 在现代视频处理和编码中,YUV 颜色空间和**色度二次采样(Chroma Subsampling)**是两个非常重要的概念。它们的结合不仅能够显著减少视频数据量,还能在保持较高视觉质量的同时优化存储和传输效率。而 YUV Plana…...
从0开始,来看看怎么去linux排查Java程序故障
一,前提准备 最基本前提:你需要有liunx环境,如果没有请参考其它文献在自己得到local建立一个虚拟机去进行测试。 有了虚拟机之后,你还需要安装jdk和配置环境变量 1. 安装JDK(以OpenJDK 17为例) 下载JDK…...
【MySQL】centos 7 忘记数据库密码
vim /etc/my.cnf文件; 在[mysqld]后添加skip-grant-tables(登录时跳过权限检查) 重启MySQL服务:sudo systemctl restart mysqld 登录mysql,输入mysql –uroot –p;直接回车(Enter) 输…...
区块链项目孵化与包装设计:从概念到市场的全流程指南
区块链技术的快速发展催生了大量创新项目,但如何将一个区块链项目从概念孵化成市场认可的产品,是许多团队面临的挑战。本文将从孵化策略、包装设计和市场落地三个维度,为你解析区块链项目成功的关键步骤。 一、区块链项目孵化的核心要素 明确…...
JavaScript基础入门(一):从零开始掌握网页互动与动态效果
JS基础(一) 目的:html是骨架,css是血和肉,js 就是灵魂 知识点一:JavaScript基本使用 网页的三剑客分别是:HTML、CSS、JS,我们把HTML当做毛坯房,CSS是房子的装修&#…...
20240824 美团 笔试
文章目录 1、单选题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、编程题2.12.2岗位:硬件开发工程师(嵌入式系统软件开发方向) 题型:20 道单选题,2 道编程题题 1、单选题 1.1 C 语言中,如果输入整数 v 是 2 的幂,下面表达式中哪个会返…...
css-根据不同后端返回值返回渲染不同的div样式以及公共组件设定
1.动态绑定 Vue: 使用计算属性 getClassName 来动态计算样式类名,并通过 :class 绑定到 div 元素上。 <template><div :class"getClassName">这是一个根据后端值动态设置样式的 div 元素。</div> </template><script> exp…...
【数据科学】一个强大的金融数据接口库:AKShare
文章目录 1. AKShare 简介2. 安装 AKShare3. AKShare 核心功能3.1 获取股票数据3.2 获取股票实时数据3.3 获取基金数据3.4 获取期货数据3.5 获取外汇数据3.6 获取数字货币数据 4. 数据处理与存储5. 实战案例6. 总结 AKShare 是一个开源的金融数据接口库,它提供了简单…...
Ubuntu 22.04系统安装部署Kubernetes v1.29.13集群
Ubuntu 22.04系统安装部署Kubernetes v1.29.13集群 简介Kubernetes 的工作流程概述Kubernetes v1.29.13 版本Ubuntu 22.04 系统安装部署 Kubernetes v1.29.13 集群 1 环境准备1.1 集群IP规划1.2 初始化步骤(各个节点都需执行)1.2.1 主机名与IP地址解析1.…...
如何开发一个大语言模型,开发流程及需要的专业知识
开发大型语言模型(LLM)是一个复杂且资源密集的过程,涉及多个阶段和跨学科知识。以下是详细的开发流程和所需专业知识指南: 一、开发流程 1. 需求分析与规划 目标定义:明确模型用途(如对话、翻译、代码生成…...
10. 神经网络(二.多层神经网络模型)
多层神经网络(Multi-Layer Neural Network),也称为深度神经网络(Deep Neural Network, DNN),是机器学习中一种重要的模型,能够通过多层次的非线性变换解决复杂的分类、回归和模式识别问题。以下…...
Windows 中学习Docker环境准备3、在Ubuntu中安装Docker
Windows 中学习Docker环境准备1、Win11安装Docker Desktop Windows 中学习Docker环境准备2、Docker Desktop中安装ubuntu Windows 中学习Docker环境准备3、在Ubuntu中安装Docker 需要更多Docker学习视频和资料,请文末联系 步骤 1:更新系统并安装依赖…...
Java项目: 基于SpringBoot+mybatis+maven+mysql实现的智能学习平台管理系(含源码+数据库+毕业论文)
一、项目简介 本项目是一套基于SpringBootmybatismavenmysql实现的智能学习平台管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、…...
把bootstrap5.3.3整合到wordpress主题中的方法
以下是将 Bootstrap 5.3.3 整合到 WordPress 主题中的方法: 下载 Bootstrap 文件:从 Bootstrap 官网下载最新的 5.3.3 版本的 CSS 和 JavaScript 文件。 上传文件到主题目录:将下载的 CSS 文件上传到 WordPress 主题文件夹中的 /css 文件夹…...
【Gitlab】虚拟机硬盘文件丢失,通过xx-flat.vmdk恢复方法
前言 由于近期过年回家,为了用电安全直接手动关闭了所有的电源,导致年后回来商上电开机后exsi上的虚拟机出现了问题。显示我的gitlab虚拟机异常。 恢复 开机之后虚拟机异常,通过磁盘浏览发现gitlab服务器下面的虚拟机磁盘文件只有一个xxx-f…...
GC日志的解读
GC日志的解读 gc日志的解读 gc日志的解读...
Shell基础:中括号的使用
在Shell脚本中,中括号([ ... ] 和 [[ ... ]])是一种常见的条件测试结构。它们用于进行文件类型检查、值比较以及逻辑判断。通过了解它们的不同特点和用法,能够帮助你编写更加高效、安全且易读的脚本。本文将详细介绍Shell中单中括…...
结构体排序 C++ 蓝桥杯
成绩排序 #include<iostream> #include<algorithm> using namespace std; struct stu {string name;//名字int grade;//成绩 }; stu a[30]; bool cmp(stu l, stu r) {if (l.grade ! r.grade) return l.grade > r.grade;return l.name < r.name; } int main()…...
Windows本地部署DeepSeek-R1大模型并使用web界面远程交互
文章目录 前言1. 安装Ollama2. 安装DeepSeek-r1模型3. 安装图形化界面3.1 Windows系统安装Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安装内网穿透工具5. 配置固定公网地址 前言 最近爆火的国产AI大模型Deepseek详细大家都不陌生,不过除了在手机上安…...
