OpenSSL命令 与 自签名证书、TLS证书的介绍及用法

一、OpenSSL 

        1.1、OpenSSL 是什么

        OpenSSL 是一个开源的安全套接层(SSL)和传输层安全(TLS)实现的软件库。它提供了各种加密算法、数字证书管理功能,以及用于安全通信的协议。OpenSSL 支持多种加密算法,包括对称加密(如 AES、DES)和非对称加密(如 RSA、DSA),以及哈希函数(如 SHA-256)。HTTPS 协议依赖于 SSL/TLS 加密来确保数据传输的安全性

        1.2、Centos7 系统安装 OpenSSL 

        首先参考这里 更新yum源 。然后如下面所示, 安装 OpenSSL。

## 使用 yum方式安装OpenSSL
[root@keycloak2 ~]# yum install openssl -y

        

二、自签名证书

        2.1、自签名证书是什么

        自签名证书是指由自己签发的证书,而不是由受信任的证书颁发机构(CA)签发的。自签名证书通常用于测试环境,因为它们不需要花费,但在生产环境中可能会引起浏览器警告,因为它们没有被广泛信任。使用 OpenSSL 可以轻松生成自签名证书,通过以下三步实现:

1、生成私钥:使用 openssl genrsa 命令生成一个私钥文件。2、生成证书请求(CSR):使用 openssl req 命令生成一个证书请求文件。3、生成自签名证书:使用 openssl x509 命令将证书请求签名为自签名证书

        2.2、工作原理

        当客户端向服务器发起连接请求,并请求建立安全连接时,服务器会返回一个数字证书。客户端收到服务器的数字证书后验证证书的合法性,包括是否由CA签发、是否过期、证书的主题名称是否与访问的网站域名匹配等‌。如果数字证书被验证为有效,客户端和服务器之间就可以建立安全连接,开始在加密的通道上发送和接收数据‌,否则显示告警。

        2.3、生成私钥和自签名证书

## 使用下面命令,生成私钥 (server.key) 和一个自签名证书 (server.crt)
## 使用时,将“你的应用名称”部分字样,替换成你希望的名字即可。
## 其中 365是证书有效期, /etc/pki/tls/private/ 和 /etc/pki/tls/certs/ 是推荐的存储路径
## 其他参数的含义见上面三个步骤中的说明## 生成RSA 私钥。在生成过程中需要你输入省份、城市、公司等一系列信息,可以一直回车不输入也可以根据实际情况输入即可。时刻谨记你是在生成“自签名”证书即可。
[root@keycloak2 ~]# openssl genrsa -out 你的应用名称.key 2048## 通过私钥生成证书签名请求(CSR文件)
[root@keycloak2 ~]# openssl req -new -key 你的应用名称.key -out 你的应用名称.csr## 使用CSR生成自签名证书
[root@keycloak2 ~]# openssl req -x509 -days 365 -newkey rsa:4096 -keyout /etc/pki/tls/private/你的应用名称.key -out /etc/pki/tls/certs/你的应用名称.crt -nodes -subj "/C=CN/ST=Beijing/L=Beijing/O=Example/CN=你的应用名称.example.com"

三、TLS证书

        采用X.509标准的数字证书,用于在传输层建立加密通信通道。包含服务器公钥、主体标识信息和CA签名,支持ECDSA、RSA等加密算法

四、三者与Https 的关系

        4.1、OpenSSL 与Https的关系

        HTTPS 协议依赖于 SSL/TLS 协议来加密数据并确保数据传输的安全性,这意味着任何使用 HTTPS 的服务器都需要一个 SSL/TLS 证书来建立安全连接。

        4.2、自签名证书与Https的关系

        虽然自签名证书可以用于 HTTPS,但由于它们不被浏览器默认信任,因此会导致浏览器显示安全警告。同时使用自签名证书的 HTTPS 服务器可以加密数据,但用户需要手动信任该证书才能避免浏览器警告。

五、用法

        简单的举两个例子

        5.1、在NGINX 上的用法

## Nginx 配置文件
server {listen 443 ssl;server_name example.com;ssl_certificate /etc/pki/tls/certs/你的应用名称.crt;ssl_certificate_key /etc/pki/tls/private/你的应用名称.key;
}

       5.2、在 SpringBoot 上的用法

        通常,私钥或证书会放在 SpringBoot 项目的  src/main/resources/ 下

## SpringBoot 2.7.x以后,可以直接使用 pemg格式的私钥
## 在 application.yml 或 application.properties 上配置
server.port=8443
server.ssl.enabled=true
server.ssl.certificate=classpath:你的应用名称.crt
server.ssl.certificate-private-key=classpath:你的应用名称.key
## 但是在 SpringBoot 2.7.x之前的版本需要将 OpenSSL 工具生成的私钥转为 JKS或PKCS12格式 使用
## 转换PKCS12格式的方法如下,其中, --passout 参数是指定你的密码。如果不带这个参数,需要在命令执行过程中手动指定[root@keycloak2 ~]# openssl pkcs12 -inkey 你的应用名称.key -in 你的应用名称.crt -export -out 你的应用名称.p12 -passout pass:YourPassword## 然后在 application.yml 或者 application.properties 文件上配置
server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:你的应用名称.p12
server.ssl.key-store-password=password
server.ssl.key-store-type=PKCS12
server.ssl.key-alias=tomcat

        5.3、在Tomcat 上的用法

        通常,私钥或证书会放在 Tomcat 的 tomcat/conf/ 下。这里出现的password 就是在生成 p12格式文件过程中指定的密码。密码指定方法见上面 SpringBoot 的2.7.x 以前版本的那一步的说明。

## Tomcat 与 SpringBoot 2.7.x 之前版本的用法一样,要先将 秘钥转换为 PKCS12 格式后使用
## server.xml 中的配置
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"maxThreads="150" scheme="https" secure="true"keystoreFile="/usr/local/tomcat/conf/你的应用名称.p12" keystorePass="password"clientAuth="false" sslProtocol="TLS" />

六、几种格式证书的区别联系

       6.1、.jks与 .p12格式对比

        有的地方会让你在生成密钥时创建 keystore 格式文件(如jks文件)。这东西是Java特有的格式,主要用于存储私钥、证书和其他加密对象。它与PKCS12(即p12 文件) 的用法近似,后者是一种标准化的文件格式,用于存储私钥、证书和其他加密对象,它更中立,能被包括java、C++在内更多的语言支持,普适性更广泛。

        而且jdk9之后,PKCS12成为Java的默认keystore格式,取代了JKS。因此本文使用的是 p12文件,而没有举 jks 文件的例子。

        6.2、.crt、.key 与 .pem 以及 .p12 格式文件的区别联系

        CRT文件:通常指证书文件,其扩展名可以是 .crt 也可以是 .pem。主要用于存储 SSL/TLS 证书。

        KEY文件:通常指私钥文件,其扩展名可以是 .key 也可以是 .pem。主要用于与证书配对使用,用于加密和解密数据。

        PEM文件:严格来说它与CRT、KEY文件不是同一维度的概念,它只是一种文本格式,使用 Base64 编码存储加密数据,其扩展名为 .pem。常用于 SSL/TLS 证书、SSH 密钥和 S/MIME 邮件加密。

        .p12文件:也是一种二进制格式,用于存储证书、私钥和中间证书。其特点在于它更多用于 Windows 和 macOS 操作系统中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/23558.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理NLP 04案例——苏宁易购优质评论与差评分析

上一篇文章&#xff0c;我们爬取了苏宁易购平台某产品的优质评价和差评&#xff0c;今天我们对优质评价与差评进行分析 selenium爬取苏宁易购平台某产品的评论-CSDN博客 目录 1. 数据加载 2. 中文分词 3. 停用词处理 4. 数据标注与合并 5. 数据集划分 6. 文本特征提取 …

20250223下载并制作RTX2080Ti显卡的显存的测试工具mats

20250223下载并制作RTX2080Ti显卡的显存的测试工具mats 2025/2/23 23:23 缘起&#xff1a;我使用X99的主板&#xff0c;使用二手的RTX2080Ti显卡【显存22GB版本&#xff0c;准备学习AI的】 但是半年后发现看大码率的视频容易花屏&#xff0c;最初以为是WIN10经常更换显卡/来回更…

【JavaEE进阶】Spring Boot配置文件

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗 如有错误&#xff0c;欢迎指出~ 目录 SpringBoot配置⽂件 举例: 通过配置文件修改端口号 配置⽂件的格式 properties基本语法 读取配置⽂件 properties配置文件的缺点 yml配置⽂件 yml基本语法 yml和proper…

Docker内存芭蕾:优雅调整容器内存的极限艺术

title: “&#x1f4be; Docker内存芭蕾&#xff1a;优雅调整容器内存的极限艺术” author: “Cjs” date: “2025-2-23” emoji: “&#x1fa70;&#x1f4a5;&#x1f4ca;” 当你的容器变成内存吸血鬼时… &#x1f680; 完美内存编排示范 &#x1f4dc; 智能内存管家脚本…

【Godot4.3】题目与答案解析合并器

免责申明 本文和工具截图中涉及题库和题目&#xff0c;均为本人自学使用&#xff0c;并未有商业和传播企图。如有侵害&#xff0c;联系删改。 概述 笔者本人医学专业从业人员&#xff0c;编程只是业余爱好。在自己的专业应考学习过程当中&#xff1a; 有时候不太喜欢纸质题库…

学习笔记-250222

论文&#xff1a; Learning Hierarchical Prompt with Structured Linguistic Knowledge for Vision-Language Models 主要研究llm在图像分类中的能力&#xff0c;当提示输入目标类别时&#xff0c;llm能够生成相关的描述以及相应的结构化关系。 1.首先利用llm从普通的描述中获…

欧拉回路与哈密尔顿回路: Fleury算法与Hierholzer 算法(C++)

图论中的回路是指一个路径, 它从某个顶点开始, 经过所有边恰好一次, 并回到起始顶点. 定义 欧拉回路: 从一个顶点出发, 经过每条边恰好一次, 并且最终回到起始顶点. 哈密尔顿回路: 从一个顶点出发, 经过每个顶点恰好一次, 并且最终回到起始顶点. 欧拉路径: 从一个顶点出发, …

从图片生成3维场景--NERF原理解析及加速版HashNeRF-pytorch代码实现

概要 NeRF&#xff08;Neural Radiance Fields&#xff09;是一种基于神经网络的三维图像生成技术&#xff0c;通过一组从不同角度拍摄的2D图片&#xff0c;生成一个3D场景&#xff0c;并且能够渲染出该场景在任意视角下的图像。这项技术的核心思想是利用神经网络的强大建模能…

PHP-综合4

[题目信息]&#xff1a; 题目名称题目难度PHP-综合42 [题目考点]&#xff1a; PHP综合训练[Flag格式]: SangFor{Ouk3i63BuShgxqdRcn_9kMNqKFDe5j4f}[环境部署]&#xff1a; docker-compose.yml文件或者docker tar原始文件。 http://分配ip:2087[题目writeup]&#xff1a;…

爱普生SG-8101CE可编程晶振赋能智能手机的精准心脏

在智能手机高速迭代的今天&#xff0c;高性能、低功耗与小型化已成为核心诉求。智能手机作为人们生活中不可或缺的工具&#xff0c;需要在各种复杂场景下稳定运行。爱普生SG-8101CE可编程晶振凭借其卓越性能&#xff0c;成为智能手机中不可或缺的精密时钟源&#xff0c;为通信、…

基于SpringBoot的“流浪动物救助系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“流浪动物救助系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 局部E-R图 系统首页界面 系统…

【AI】模型量化--模型量化技术基础

1. 背景 对于接触过AI模型的人来说,经常会听说一个词语模型量化,那什么是模型量化?为什么需要模型量化?有哪些常用的模型量化技术呢?本文将一一展开叙述。 2. 概念 模型量化是一种在深度学习和机器学习领域中广泛应用的技术,旨在通过减少模型中数据的表示精度来降低模…

力扣(leetcode)每日一题 1656 设计有序流

1656. 设计有序流 - 力扣&#xff08;LeetCode&#xff09; 题目 有 n 个 (id, value) 对&#xff0c;其中 id 是 1 到 n 之间的一个整数&#xff0c;value 是一个字符串。不存在 id 相同的两个 (id, value) 对。 设计一个流&#xff0c;以 任意 顺序获取 n 个 (id, value) …

【附源码】基于opencv+pyqt5搭建的人脸识别系统

文章目录 前言一、人脸检测二、人脸识别1.训练识别器2.识别人脸 三、界面相关1.Qlabel展示图片2.表格跟随内容而增加和减少3.选择图片文件4.警告框 四、源码获取总结 前言 人脸识别技术作为人工智能领域的一颗璀璨明珠&#xff0c;正逐渐渗透到我们生活的每一个角落&#xff0…

【一起学Rust | 框架篇 | Tauri2.0框架】在Tauri应用中设置Http头(Headers)

文章目录 前言一、配置准备1. 检查版本2. 使用条件3. 支持的请求头&#xff08;并不是全部支持&#xff09; 二、使用步骤1. 如何配置header2. 框架集成1. 对于Vite系列、Nuxt、Next.js这种前端框架Vite系列框架Angular系列框架Nuxt系列框架Next.js系列框架 2. 对于Yew和Leptos…

计算机毕业设计SpringBoot+Vue.jst0图书馆管理系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

SeaCMS V9海洋影视管理系统报错注入

漏洞背景 SQL 注入攻击是当前网络安全中最常见的一种攻击方式&#xff0c;攻击者可以利用该漏洞访问或操作数据库&#xff0c;造成数据泄露或破坏。通常发生在开发人员未能正确处理用户输入时。 在 SeaCMS V9 中&#xff0c;用户输入&#xff08;如登录、评论、分页、ID 等&a…

Upload-labs

pass-01 先随便上传一个php文件&#xff0c;但提示发现使用了js对不法文件进行了检查&#xff0c;是前端验证 上传php代码<?php phpinfo();?> ,使用bp抓包 将后缀名改为php然后放行 复制图片链接访问&#xff0c;得到有关php的所有信息 Pass-02 根据提示可以知道&…

算法回顾1

class Solution {public int removeElement(int[] nums, int val) {int fast 0;int slow 0;for (fast 0; fast < nums.length; fast) {if (nums[fast] ! val) {nums[slow] nums[fast];slow;}}return slow;} } 用双指针写这道题&#xff0c;快慢指针初始值都为0&#xf…

智能交通系统(Intelligent Transportation Systems):智慧城市中的交通革新

智能交通系统&#xff08;Intelligent Transportation Systems, ITS&#xff09;是利用先进的信息技术、通信技术、传感技术、计算机技术以及自动化技术等&#xff0c;来提升交通系统效率和安全性的一种交通管理方式。ITS通过收集和分析交通数据&#xff0c;智能化地调度、控制…