生成SSL/TLS 自签名证书

news/2024/7/7 20:01:48

可通过以下两种方式获取相关 SSL/TLS 证书:

自签名证书:即使用自己签发的证书,由于自签名证书存在较多的安全隐患,因此只建议用于测试验证环境。
申请或购买证书:您可以向 Let’s Encrypt (opens new window)或华为云、腾讯云等云厂商申请免费证书,也可以向 DigiCert (opens new window)等机构购买收费证书。对于企业级用户,一般建议申请收费的 OV 及以上类型的证书,以获取更高等级的安全保护。

在这里插入图片描述

创建自签名证书

前置准备

已安装 OpenSSL (opens new window)。

1.运行以下命令生成密钥对,该命令随即会提示您输入密钥保护密码,后续在生成、签发、验证证书时均需要此密码。请妥善相关密钥及密码。

openssl genrsa -des3 -out rootCA.key 2048
  1. 运行以下命令通过密钥对中的私有密钥生成 CA 证书,该命令随即会提示您设置证书的唯一标识名称 DN(Distinguished Name)。
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.crt

使用步骤 2 中的 CA 证书来签发服务端证书,用于验证服务器所有者的身份,服务端证书通常颁发给主机名、服务器名称或域名(如 www.emqx.com)。我们需要 CA 密钥(rootCA.key)、CA 证书( rootCA.crt)和服务端 CSR (server.csr)生成服务端证书。Common Name(CN)必须设置成域名

3.1 运行以下命令生成服务端证书密钥对:

openssl genrsa -out server.key 2048

3.2 运行以下命令使用 Server 密钥对制作 CSR。经 CA 根证书私钥签名后,CSR 可生成颁发给用户的证书公钥文件。该命令随即也会要求设置证书的唯一标识名称。

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

系统将提示以下信息,对应的含义如下:

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]: # 国家/地区
State or Province Name (full name) [Some-State]: # 省/市
Locality Name (eg, city) []: # 城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]: # 组织机构(或公司名),如 EMQ
Organizational Unit Name (eg, section) []: # 机构部门,如 EMQX
Common Name (e.g. server FQDN or YOUR name) []: # 通用名称,此处应当设置为服务器域名如 mqtt.emqx.com
...

Common Name(CN)必须设置成域名

3.3 生成服务端证书,此时也可指定证书的有效天数,此处为 365 天:

openssl x509 -req -in server.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out server.crt -days 365

至此您就得到了一组证书。

.

├── rootCA.crt
├── rootCA.key
├── rootCA.srl
├── server.crt
├── server.csr
└── server.key

参考:
https://www.emqx.io/docs/zh/v5.1/network/tls-certificate.html#%E5%88%9B%E5%BB%BA%E8%87%AA%E7%AD%BE%E5%90%8D%E8%AF%81%E4%B9%A6

在线ssl证书解码、站点ssl证书解析,生成
http://web.chacuo.net/netssldecoder

https://zhuanlan.zhihu.com/p/624493014


http://lihuaxi.xjx100.cn/news/1496650.html

相关文章

算法工程师需要会的docker命令

查看镜像 docker images查看容器 docker ps 进入容器 docker exec -it 容器ID bash容器ID可以输入部分或者全部

Vue生命周期(详细)

生命周期 图: 可以理解vue生命周期就是指vue实例从创建到销毁的过程,在vue中分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/后。 一、创建(实例) 1、beforeCreate&#xff1a…

Redis发布订阅

Redis发布订阅 Redis 发布订阅(pub/sub)是一种 消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅任意数量的频道。 订阅/发布消息图: 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —…

剑指Offer62.圆圈中最后剩下的数字 C++

1、题目描述 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从…

ExpressLRS开源之接收机固件编译烧录步骤

ExpressLRS开源之接收机固件编译烧录步骤 1. 源由2. 编译步骤2.1 推荐源代码指定方案2.2 方法一:ELRS Configurator步骤一:下载ELRS Configurator工具步骤二:安装ELRS Configurator工具步骤三:使用ELRS Configurator工具进行配置步…

java遇到java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver该如何解决

普通的Java项目,利用servlet实现登录页面跳转出现下列问题。该如何解决??? 首先你要先加载驱动,idea通过项目结构添加的依赖包是无法正常加载驱动的。我们要在 WEB-INF目录下建立lib目录在lib目录下添加MySQL驱动。

22道Mysql面试真题和答案

本专栏记录Java后端开发相关的面试题,欢迎大家阅读专栏的其他文章。 1.请介绍下联合索引的最左匹配原则 建立一个联合索引(a,b,c),相当于建立多个索引(a)(a,…

ASP.NET Core 中的 静态文件

Static Files Static Files 包括 HTML,CSS,图片,JavaScript,以及其他静态资源文件。 即网站本身的内容。 Static Files 服务 Static Files 保存在项目的 Web Root 目录,即 wwwroot 文件夹中。 而wwwroot目录是Conte…