新建一个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" 进行了备份。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论