Springboot SSL证书重新导入没生效问题

文章讲述了在Java程序中,原本通过设置全局变量导入证书库(如cacerts)的方式需要重启才能生效,而改为使用自定义信任库和SSLContext可以实现实时生效。同时,提供了使用keytool命令导入和删除证书的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序原本使用配置全局变量方式导入证书库(使用的是jdk下默认证书库cacerts)

String javaHome = System.getProperty("java.home");
String keystore = Paths.get(javaHome, "/lib/security/cacerts").toString();
System.setProperty("javax.net.ssl.trustStore", keystore);
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");

这种方式重新导入证书文件需要重启程序才能生效。

后来发现改用自定义信任库可以实时生效,如下代码

String javaHome = System.getProperty("java.home");
String keystorePath = Paths.get(javaHome, "/lib/security/cacerts").toString();
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance("X509");
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
keystore.load(new FileInputStream(keystorePath), "changeit".toCharArray());
trustManagerFactory.init(keystore);
TrustManager[] trustManagers = trustManagerFactory.getTrustManagers();
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustManagers, null);
SSLContext.setDefault(sc);

附加证书文件重新导入证书库的命令:

//先移除已经导入的同名证书(首次导入则不需要)
keytool -delete -alias [证书别名] -keystore [证书库路径] -storepass [证书库密码]
//导入证书
keytool -importcert -noprompt -trustcacerts -alias [证书别名] -keystore [证书库路径] -storepass [证书库密码] -file [导入的证书路径]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值