当前位置: 代码网 > 服务器>服务器>Linux > linux使用openssl生成.crt.key.keystore

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

2026年04月17日 Linux 我要评论
新建一个ssl.cnf[req]distinguished_name = req_distinguished_namereq_extensions = v3_req[req_distinguished

新建一个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" 进行了备份。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com