生成SSL证书

news/2024/9/29 1:21:03

生成SSL证书

 

 

SSL 是一种加密协议,用于在网络通信中提供数据的保密性和完整性。它使用公钥和私钥来建立安全的连接,并对传输的数据进行加密和解密,以防止未经授权的访问和篡改。根据文章操作,生成以下四个文件用于存储与 SSL 相关的密钥、证书和信任的根证书。

  1. client.keystore.jks
    是客户端密钥库文件。它包含客户端的私钥和相应的证书。客户端使用该私钥进行身份验证和安全通信。客户端的私钥用于加密传输给服务器的数据,并与服务器的公钥进行握手和密钥交换,确保通信的安全性和完整性。
  2. server.keystore.jks
    是服务器密钥库文件。它包含服务器的私钥和相应的证书。服务器使用该私钥进行身份验证和安全通信。服务器的私钥用于解密客户端发送的数据,并与客户端的公钥进行握手和密钥交换,确保通信的安全性和完整性。
  3. client.truststore.jks
    是客户端信任库文件。它包含客户端信任的根证书或证书链。客户端使用该信任库来验证服务器的证书是否可信。如果服务器的证书由客户端信任库中的任何一个根证书所签发,客户端将信任服务器的证书,并继续与服务器进行安全通信。
  4. server.truststore.jks
    是服务器信任库文件。它包含服务器信任的根证书或证书链。服务器使用该信任库来验证客户端的证书是否可信。如果客户端的证书由服务器信任库中的任何一个根证书所签发,服务器将信任客户端的证书,并继续与客户端进行安全通信。

keytool相关指令说明

指令含义
-alias 别名
-keystore 指定密钥库的名称(就像数据库一样的证书库,可以有很多个证书,cacerts这个文件是jre自带的, 也可以使用其它文件名字,如果没有这个文件名字,它会创建这样一个)
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
-list 显示密钥库中的证书信息
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目
-import 将已签名数字证书导入密钥库
-keypasswd 修改密钥库中指定条目口令
-dname 指定证书拥有者信息。其中,CN=名字与姓氏/域名,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-validity 指定创建的证书有效期多少天

服务器端SSL证书签发

第一步:创建几个目录来保存证书

为了方便证书的保存管理,这里先专门创建几个目录来保存证书

mkdir -p /home/crbt/lihw/ca/{root,server,client,trust}

第二步:生成server.keystore.jks文件(生成服务端的keystore文件)

keytool -keystore /home/crbt/lihw/ca/server/server.keystore.jks -alias node1 -validity 365 -genkey -keypass Q06688 -keyalg RSA -dname "CN=node1,OU=aspire,O=aspire,L=beijing,S=beijing,C=cn" -storepass Q06688 -ext SAN=DNS:node1

注:这里的-ext SAN=DNS:xxx需要指定xxx为我们定义的主机名;-dname中的CN也需要指定为我们定义的主机名。

验证证书:

keytool -list -v -keystore /home/crbt/lihw/ca/server/server.keystore.jks

第三步:生成CA认证证书(ca-cert、ca-key)

提示:利用Linux自带的OpenSSL创建即可。(为了保证整个证书的安全性,需要使用CA进行证书的签名保证)

openssl req -new -x509 -keyout /home/crbt/lihw/ca/root/ca-key -out /home/crbt/lihw/ca/root/ca-cert -days 365 -passout pass:Q06688 -subj "/C=cn/ST=beijing/L=beijing/O=aspire/OU=aspire/CN=node1"

第四步:通过CA证书创建一个客户端信任证书(client.truststore.jks)

keytool -keystore /home/crbt/lihw/ca/trust/client.truststore.jks -alias CARoot -import -file /home/crbt/lihw/ca/root/ca-cert -storepass 

注:有了信任证书才可以进行证书有效性的检查。以后的证书必须通过CA认证后才能使用。

第五步:通过CA证书创建一个服务端器端信任证书(server.truststore.jks)

keytool -keystore /home/crbt/lihw/ca/trust/server.truststore.jks -alias CARoot -import -file /home/crbt/lihw/ca/root/ca-cert -storepass Q06688

注:以后的证书必须通过CA认证后才能使用。

第六步:服务器证书的签名处理

6.1 导出服务器端证书(server.cert-file)

keytool -keystore /home/crbt/lihw/ca/server/server.keystore.jks -alias node1 -certreq -file /home/crbt/lihw/ca/server/server.cert-file -storepass Q06688

6.2 用CA给服务器端证书进行签名处理(server.cert-signed)

openssl x509 -req -CA /home/crbt/lihw/ca/root/ca-cert -CAkey /home/crbt/lihw/ca/root/ca-key -in /home/crbt/lihw/ca/server/server.cert-file -out /home/crbt/lihw/ca/server/server.cert-signed -days 365 -CAcreateserial -passin pass:Q06688

6.3 将CA证书导入到服务器端keystore

keytool -keystore /home/crbt/lihw/ca/server/server.keystore.jks -alias CARoot -import -file /home/crbt/lihw/ca/root/ca-cert -storepass Q06688

6.4 将已签名的服务器证书导入到服务器keystore

keytool -keystore /home/crbt/lihw/ca/server/server.keystore.jks -alias node1 -import -file /home/crbt/lihw/ca/server/server.cert-signed -storepass Q06688

客户端SSL证书签发

第一步:导出客户端证书(client.keystore.jks)

keytool -keystore /home/crbt/lihw/ca/client/client.keystore.jks -alias node1 -validity 365 -genkey -keypass Q06688 -keyalg RSA -dname "CN=node1,OU=aspire,O=aspire,L=beijing,S=beijing,C=cn" -ext SAN=DNS:node1 -storepass Q06688

第二步:将证书文件导入到客户端keystore(client.cert-file)

keytool -keystore /home/crbt/lihw/ca/server/server.keystore.jks -alias node1 -certreq -file /home/crbt/lihw/ca/client/client.cert-file -storepass Q06688

第三步:用CA给客户端证书进行签名处理(client.cert-signed)

openssl x509 -req -CA /home/crbt/lihw/ca/root/ca-cert -CAkey /home/crbt/lihw/ca/root/ca-key -in /home/crbt/lihw/ca/client/client.cert-file -out /home/crbt/lihw/ca/client/client.cert-signed -days 365 -CAcreateserial -passin pass:Q06688

第四步:将CA证书导入到客户端keystore

keytool -keystore /home/crbt/lihw/ca/client/client.keystore.jks -alias CARoot -import -file /home/crbt/lihw/ca/root/ca-cert -storepass Q06688

第五步:将已签名的证书导入到客户端keystore

keytool -keystore /home/crbt/lihw/ca/client/client.keystore.jks -alias CARoot-client -import -file /home/crbt/lihw/ca/client/client.cert-signed -storepass Q06688

参考:SSL认证之相关证书的生成_linux 根据服务端ssl证书生成客户端证书-CSDN博客,参考的博客中有错误作者还未更正。以下是我测试环境,生成服务器/客户端SSL证书的步骤,亲测可用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Flink状态(二)

Flink提供了不同的状态存储方式,并说明了状态如何存和存储在哪里。 状态可以被存储在Jvm的堆和堆外。根据状态存储方式的不同,Flink也能代替应用管理状态,意思是Flink能够进行内存管理(有必要的时候,可能会溢出到硬盘),允许应用保存非常大的状态。默认情况下,在配置文件fli…

服务器数据恢复成功案例

一、服务器数据恢复描述 需要进行数据恢复的服务器为OceanStor S6800T,服务器硬件配置情况为15块磁盘组成一组80T大小的raid5阵列,阵列划分为两个lun、三个分区。服务器重装系统后发现磁盘分区丢失了一个,需要进行服务器数据恢复。二、服务器数据备份 服务器数据恢复第一步需…

使用 TensorRT C++ API 调用GPU加速部署 YOLOv10 实现 500FPS 推理速度——快到飞起!!

NVIDIA TensorRT ™ 是一款用于高性能深度学习推理的 SDK,包含深度学习推理优化器和运行时,可为推理应用程序提供低延迟和高吞吐量。YOLOv10是清华大学研究人员近期提出的一种实时目标检测方法,通过消除NMS、优化模型架构和引入创新模块等策略,在保持高精度的同时显著降低…

学习笔记483—如何关闭 Mac Office 更新提示

Mac Office 总是弹出Microsoft AutoUpdate更新提示怎么办? 问题:Mac电脑安装 Office 2021 Mac版后,老是弹出更新提示(Microsoft AutoUpdate),关掉之后再开机又会弹出来,怎么办? 解决方法:用 App Cleaner 把Mac Office 更新程序 Microsoft AutoUpdate 直接卸载,这样就…

Head

知足常乐!

oracle partition by 语法

参考链接:https://www.cnblogs.com/xfeiyun/p/17765225.html 数据准备 建表 create table xzq_person ( --行政区人口表province varchar(10),city varchar(10),persons number(10) );插入数据 insert into xzq_person values (江苏,苏州,10); insert into xzq_person v…

机器学习day04

从机器学习过渡到深度学习,虽然都是初步的就是了……study

服务器存储误删所有lun的数据恢复解决方案

NetApp FAS3220是NetApp推出的中端存储阵列,针对NAS和SAN环境构建,被定制为虚拟化、私有云或传统、早先的用途,适用于从几TB到超过2PB的存储需求,提供数据保护,可扩展性,自动精简配置,精简克隆,备份和灾难恢复,下面就讲解NetApp FAS 3220存储的数据恢复的方法。 本次讲…