linux使用openssl生成.crt.key.keystore

 更新时间:2026年04月17日 14:40:08   作者:搬砖的梦先生  
文章主要详细介绍了使用`ssl.cncnf`生成RSA密钥、根据`key`和`cnf`生成CRT、生成自签证书、查看`.crt`详细信息以及生成`keystore`的方法,这些操作主要用于SSL证书的生成与配置,确保网络通信的安全性

新建一个ssl.cnf

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = CN

stateOrProvinceName = BeiJing

localityName = BeiJing
organizationName = GS Ltd		### 公司缩写 Ltd

organizationalUnitName = GS		### 公司缩写

commonName = 192.168.1.1

commonName_max = 64

[v3_req]
basicConstraints = CA:TRUE
subjectAltName = @alt_names

[alt_names]
#根据需要可以添加多个,我在测试时使用内网IP,一直提示hostname not verified ,
#后来在这里添加了自己的ip就可以了
IP.1 = 192.168.1.1
IP.2 = 192.168.1.2

生成key

[root@192-168-1-1 ssl] openssl genrsa -des3 -out ssl.key 4096
Generating RSA private key, 4096 bit long modulus
................................................................................++
e is 65537 (0x10001)
Enter pass phrase for ssl.key:					##输入密码 123456
Verifying - Enter pass phrase for ssl.key:          ## 再次输入密码  123456

  • genrsa:产生rsa密钥命令
  • -out:输出路径

根据key和cnf生产crt

[root@192-168-1-1 ssl]# openssl req -new -x509 -days 365 -key ssl.key -out ssl.crt -extensions v3_req -config ssl.cnf
Enter pass phrase for ssl.key:  ##输入key的密码 123456
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.
-----
CN []:CN
BeiJing []:BeiJing
BeiJing []:BeiJing
GS Ltd []:GS Ltd
GS []:GS
192.168.1.1 []:192.168.1.1
  • -new:表示生成一个新证书签署请求
  • -x509:专用于CA生成自签证书,如果不是自签证书则不需要此项
  • -key:用到的私钥文件
  • -out:证书的保存路径
  • -days:证书的有效期限,单位是day(天),默认是openssl.cnf的default_days

查看.crt的详细信息

openssl x509 -in ssl.crt -noout -text

生产keystore

[root@192-168-1-1 ssl]# openssl pkcs12 -export -in ssl.crt -inkey ssl.key -out ssl.p12 -name ssl -CAfile ssl.crt -caname root -chain
Enter pass phrase for ssl.key:  ##输入key的密码 123456
Enter Export Password:  ##输入密码 123456
Verifying - Enter Export Password:   ##输入密码 123456

[root@192-168-1-1 ssl]# keytool -importkeystore -v  -srckeystore ssl.p12 -srcstoretype pkcs12 -srcstorepass 123456 -destkeystore ssl.keystore -deststoretype jks -deststorepass 123456 
正在将密钥库 ssl.p12 导入到 ssl.keystore...
已成功导入别名 ssl 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消
[正在存储ssl.keystore]

Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore ssl.keystore -destkeystore ssl.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。

[root@192-168-1-1 ssl]# keytool -importkeystore -srckeystore ssl.keystore -destkeystore ssl.keystore -deststoretype pkcs12
输入源密钥库口令:  
已成功导入别名 ssl 的条目。
已完成导入命令: 1 个条目成功导入, 0 个条目失败或取消

Warning:
已将 "ssl.keystore" 迁移到 Non JKS/JCEKS。将 JKS 密钥库作为 "ssl.keystore.old" 进行了备份。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决Linux中Systemd服务环境变量缺失的问题

    解决Linux中Systemd服务环境变量缺失的问题

    在Linux系统运维中,我们可能会遇到在使用systemd管理的服务时无法获取系统环境变量,尤其是PATH变量,这确实是一个常见的挑战,因为systemd启动的服务通常不会加载用户的环境变量,下面,我们将一起探讨解决这一问题的几种方法,需要的朋友可以参考下
    2024-01-01
  • linux中mkdir命令使用详解

    linux中mkdir命令使用详解

    这篇文章主要详细介绍了linux中mkdir命令使用方法以及实例代码分享,十分的全面,有需要的小伙伴参考。
    2015-01-01
  • Linux中的进程守护supervisor安装配置及使用

    Linux中的进程守护supervisor安装配置及使用

    supervisor是一个很好的守护程序管理工具,配置方面自动启动,日志输出,自动切割日志等等一系列强大功能,下面是在CentOS下安装使用supervisor的记录,非常不错,感兴趣的朋友跟随小编一起看看吧
    2019-07-07
  • 在Ubuntu20.04中安装ROS Noetic的方法

    在Ubuntu20.04中安装ROS Noetic的方法

    这篇文章主要介绍了在Ubuntu20.04中安装ROS Noetic的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 详解Linux运维CentOS系统SVN双备份Shell脚本

    详解Linux运维CentOS系统SVN双备份Shell脚本

    本篇文章主要介绍了详解Linux运维CentOS系统SVN双备份Shell脚本,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Linux网卡Bond设置方式

    Linux网卡Bond设置方式

    网卡Bond技术通过将多个物理网络接口组合成一个逻辑接口,实现网络带宽的增加、可靠性提升和负载均衡,支持多种模式,如轮询模式、主备模式等,并提供了基于配置文件、nmcli命令和脚本三种配置方法
    2026-01-01
  • Linux获取docker容器中的文件路径的方法

    Linux获取docker容器中的文件路径的方法

    在Linux系统中,Docker容器中的文件路径与宿主机上的文件系统是隔离的,因此我们不能直接使用宿主机的文件系统路径来访问容器内的文件,但是,有几种方法可以让我们获取或操作Docker容器中的文件,本文介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • 浅析Linux中vsftpd服务配置(匿名,用户,虚拟用户)

    浅析Linux中vsftpd服务配置(匿名,用户,虚拟用户)

    vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,支持很多其他的 FTP 服务器所不支持的特征。这篇文章主要介绍了Linux中vsftpd服务配置(匿名,用户,虚拟用户),需要的朋友可以参考下
    2019-11-11
  • wamp2.2e 64位 curl 开启不了的解决办法

    wamp2.2e 64位 curl 开启不了的解决办法

    这篇文章主要介绍了wamp2.2e 64位 curl 开启不了的解决办法,需要的朋友可以参考下
    2014-12-12
  • Win7下Linux虚拟机安装教程

    Win7下Linux虚拟机安装教程

    这篇文章主要为大家详细介绍了Win7下Linux虚拟机安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论