问题描述:项目调用外部https接口,因为证书是自签证书,所以需要把证书导入到信任库。
1、执行以下命令报错:
C:\Users\User\Desktop\security>keytool -import -alias lckfzzx -file keystore.p12 -keystore client-truststore.jks -storepass lc2020
keytool 错误: java.lang.Exception: 所输入的不是 X.509 证书
2、解决办法:
顺序执行以下两条命令
p12格式转pem格式:
openssl pkcs12 -clcerts -nokeys -out gly_pub.pem -in keystore.p12
pem格式转der:
openssl x509 -outform der -in gly_pub.pem -out lckfzzx.der
[root@wuhan-enshi-indata tools]# openssl pkcs12 -clcerts -nokeys -out gly_pub.pem -in keystore.p12
Enter Import Password:
MAC verified OK
[root@wuhan-enshi-indata tools]# openssl x509 -outform der -in merchant-publickKey.pem -out lckfzzx.der
[root@wuhan-enshi-indata tools]# ll
执行完成后,当前目录下生成的lckfzzx.der文件,在下一步中使用。
3、再次执行第一步命令
C:\Users\User\Desktop\security>keytool -import -alias lckfzzx -file lckfzzx.der -keystore client-truststore.jks -storepass lc2020
所有者: CN=ss, OU=ss, O=ss, L=ss, ST=ss, C=ss
发布者: CN=ss, OU=ss, O=ss, L=ss, ST=ss, C=ss
序列号: 6e78c3e1
有效期为 Fri Sep 17 21:06:12 CST 2021 至 Mon Sep 15 21:06:12 CST 2031
证书指纹:
MD5: 9B:A3:0E:FB:6C:53:1E:8A:F0:7D:F0:D1:86:4B:E1:F6
SHA1: 41:97:95:E7:D0:89:9E:55:BD:4B:56:A7:30:6E:7E:EE:9F:F5:3B:C8
SHA256: A1:E9:38:24:40:AE:A2:A0:97:58:72:B7:44:9C:CB:B0:EF:50:31:11:72:C9:CD:C2:E5:B8:D8:88:81:F0:31:94
签名算法名称: SHA256withRSA
主体公共密钥算法: 2048 位 RSA 密钥
版本: 3
扩展:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 2B A7 24 9E 65 14 DA CF A9 42 1F D9 12 6E 3F 7D +.$.e....B...n?.
0010: F7 33 3B B8 .3;.
]
]
是否信任此证书? [否]: y
证书已添加到密钥库中
导入成功。