Tomcat启动Alias name [null] does not identify a key entry报错分析,涉及从公钥(CER)+私钥(KEY)转换为jks证书的方法

先说原因是什么,之前百度,谷歌,CSDN上也搜过,搜到最多的答案是server.xml中缺少指定keyAlias=xxx,但是试了以后会发现还是报这个错,只是报错由Alias name [null] does not identify a key entry变成了Alias name [xxx] does not identify a key entry。后来从公司内网看到一个帖子才知道,原来是因为我使用keytool生成的证书有问题,里面只存在公钥,而没有私钥。
我是直接使用下面命令直接将cer证书转为jks证书

keytool -import -alias xxxCert -file xxx.cer -keystore xxx.jks

问题是cer证书只包含证书公钥,而没有私钥,导出的jks证书只包含公钥而没有私钥
使用keytool -list -keystore xxx.jks 会显示证书类型是 trustedCertEntry
在这里插入图片描述
正确做法应该是先使用cer证书和私钥key生成p12证书,再由p12转为jks

openssl pkcs12 -export –out xxx.p12 -in xxx.cer -inkey xxx.key

keytool -importkeystore -srckeystore xxx.p12 -srcstoretype pkcs12 -destkeystore xxx.jks -deststoretype JKS

然后再次查看证书信息显示是PrivateKeyEntry
在这里插入图片描述

PrivateKeyEntry,为私钥,配置在tomcat的server.xml(CAS服务端)
trustedCertEntry,为公钥,配置在jdk(应用服务端)

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,这个问题我可以回答。您可以使用Java自带的RSA算法库,结合SpringBoot开发一个生成RSA公钥私钥的接口。下面给您提供一个简单的示例代码: ``` import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.util.HashMap; import java.util.Map; @RestController public class RSAController { @RequestMapping("/generateKeyPair") public Map<String, Object> generateKeyPair() throws NoSuchAlgorithmException { // 生成RSA公钥私钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); keyPairGenerator.initialize(1024); KeyPair keyPair = keyPairGenerator.genKeyPair(); RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); // 将公钥私钥存入Map返回给前端 Map<String, Object> resultMap = new HashMap<>(2); resultMap.put("publicKey", publicKey.getEncoded()); resultMap.put("privateKey", privateKey.getEncoded()); return resultMap; } } ``` 以上代码中,我们使用了Java自带的KeyPairGenerator和RSA算法库生成了一对公钥私钥,并将它们存入了一个Map中,最后通过SpringBoot的RestController返回给前端。您可以根据实际需要进行更详细的定制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值