首页 > 其他分享 >【SSL协议】生成SSL证书

【SSL协议】生成SSL证书

时间:2024-02-04 18:34:31浏览次数:32  
标签:keystore 证书 crbt ca 生成 SSL home lihw

目录

生成SSL证书

SSL 是一种加密协议,用于在网络通信中提供数据的保密性和完整性。它使用公钥和私钥来建立安全的连接,并对传输的数据进行加密和解密,以防止未经授权的访问和篡改。

参考:SSL认证之相关证书的生成_linux 根据服务端ssl证书生成客户端证书-CSDN博客

注意:参考的博客中有错误作者还未更正。以下是我测试环境,生成服务器/客户端SSL证书的步骤,亲测可用。

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

标签:keystore,证书,crbt,ca,生成,SSL,home,lihw
From: https://www.cnblogs.com/lihw/p/18006774

相关文章

  • npm install certificate has expired 证书过期的解决办法
    npminstall时certificatehasexpired错误的解决办法报错:npmERR!requesttohttps://registry.npm.taobao.org/eventsfailed,reason:certificatehasexpired shell复制代码npminstallnpmERR!codeCERT_HAS_EXPIREDnpmERR!errnoCERT_HAS_EXPIRED......
  • 2024年生成式AI芯片市场规模将达500亿美元
    1月24日,德勤发布《2024科技、传媒和电信行业预测》中文版报告,2024年是科技、传媒和电信行业关键的一年,不少科技公司正利用生成式AI升级软件和服务,预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许多软件公司在产品中嵌入生成式AI,有些企业的产品将......
  • java代码实现自动生成数据库表er图
    最近有同事看到字节跳动产品设计文档里有数据库表er图。就想问问又没有现成的工具也给直接生成一个er图,经查找验证发现并没有。因为现在表关系都是用的逻辑外键而非物理外键约束的,所以像navicat等工具就算生成了也没有描述关系的连接线。那么为了满足需求,这边就略微出手写了个代码......
  • SSL证书的验证过程
    HTTPS是工作于SSL层之上的HTTP协议,SSL(安全套接层)工作于TCP层之上,向应用层提供了两个基本安全服务:认证和保密。SSL有三个子协议:握手协议,记录协议和警报协议。其中握手协议实现服务器与客户端的认证与密钥交换,记录协议进行数据加密并保证数据的完整性,警报协议则规定了错误类型和处理......
  • 大语言模型可以自动生成sql语句吗?
    大语言模型的能力已经是毋庸置疑的了,随着ChatGPT的霸榜,各种语言模型的应用也多了起来,这时候突然有一个意外,那就是:大语言模型可以自动生成sql语句吗?之所以有这个疑问,主要是因为sql正好是一种查询语言,可以说是正好处于大语言模型的处理范畴之下,同时sql语句的编写是日常计算机应用中极......
  • 推荐四款常用测试数据生成工具(适用自动化测试、性能测试)
    一、前言在软件测试中,测试数据是测试用例的基础,对测试结果的准确性和全面性有着至关重要的影响。因此,在进行软件测试时,需要生成测试数据以满足测试场景和要求。本文将介绍如何利用测试数据生成工具来快速生成大量的测试数据。二、测试数据生成工具今天给大家介绍四款常用的数......
  • (12)动态生成菜单及绑定自定义事件
    varAddCollctMenus:ArrayOfTMenuItem;//动态菜单 procedureTForm1.Button5Click(Sender:TObject);Vari,AddCollctMenuCount:Integer;BeginAddCollctMenuCount:=Length(AddCollctMenus)-1;Fori:=0ToAddCollctMenuCountDoBeginFreeAndNil......
  • 在Unity中快速生成基于模板的Lua脚本
    在学习Xlua时,这个工具提供了一个简单而强大的方式来快速生成基于模板的Lua脚本,有助于提高开发效率和保持代码的一致性。1.xlua框架导入在GitHub上搜索xlua,找到腾讯的xlua项目,下载项目的压缩包。然后将压缩包里的Plugins和XLua这两个文件夹导入Unity的Assets目录下,如下图所示:2.......
  • requests库请求出现 SSLCertVerificationError
    python使用requests库发送https请求报错:SSLCertVerificationError:[SSL:CERTIFICATE_VERIFY_FAILED]。requests库简单介绍:Requests是一常用的http请求库,它使用python语言编写,可以很方便地发送http请求及处理响应结果。Requests允许你发送纯天然,植物饲养的HTTP/1.1请求,无需......
  • pid文件未生成:mysqld_safe mysqld from pid file /usr/local/mysql/data/mysql.pid en
    问题/usr/local/mysql/bin/mysqld_safe--defaults-file=/usr/local/mysql/conf/my.cnf--user=mysql该命令启动mysql时,未启动成功,终端输出下列报错:2024-02-03T02:56:51.449040Zmysqld_safeLoggingto'/usr/local/mysql/mysqllog/logfile/mysql-err.log'.2024-02-03T02:......