在Linux系统上,使用CRUL或者SpringBoot Feign发送HTTPS请求的时候,客户端在验证服务器合法性时会使用Linux服务器或者JVM的根证书。
问题:
①Linux服务器的根证书默认就会自动更新吗?如何判断是否开启自动更新?自动更新频率是?
②JVM中的根证书会自动更新吗?
③如果上面两个问题的答案是都不会自动更新,那么以前本番环境发送HTTPS请求的时候都没有指定CA,而是用Linux根证书或者JVM根证书,岂不是在证书过期后都会无法发送HTTPS请求?
有没有比较专业的人士,碰到过类似的问题?虚心请教,谢谢!
Linux环境下CA证书更新问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
24条回答 默认 最新
关注 获得0.30元问题酬金 以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。
解决方法:
- 从根目录中加载证书(例如:CURL -FSSL HTTPS://ROOT-CERTIFICATES.ORG/ROOT.CRT)。
- 确保证书的路径正确,例如:CERTS/YOUR-USERNAME/ROOT.CRT
代码示例:
IMPORT ORG.APACHE.COMMONS.IO.IOUTILS; IMPORT JAVA.IO.FILEINPUTSTREAM; IMPORT JAVA.IO.INPUTSTREAM; PUBLIC CLASS MAIN { PUBLIC STATIC VOID MAIN(STRING[] ARGS) THROWS EXCEPTION { STRING ROOTCERTPATH = "CERTS/YOUR-USERNAME/ROOT.CRT"; INPUTSTREAM IN = NEW FILEINPUTSTREAM(ROOTCERTPATH); TRY (INPUTSTREAM CERTSTREAM = NEW BUFFEREDINPUTSTREAM(IN)) { // 加载证书 CERTIFICATEFACTORY CF = CERTIFICATEFACTORY.GETINSTANCE("X509"); CERTIFICATE CERTIFICATE = (CERTIFICATE) CF.GENERATECERTIFICATE(CERTSTREAM); // 获取证书的有效期 LONG VALIDITYTIME = CERTIFICATE.GETNOTBEFORE().TOINSTANT() .ATZONE(ZONEID.SYSTEMDEFAULT()) .TOLOCALDATETIME() .TOEPOCHSECOND(); SYSTEM.OUT.PRINTLN(CERTIFICATE.GETSUBJECTDN()); SYSTEM.OUT.PRINTLN(CERTIFICATE.GETSERIALNUMBER()); SYSTEM.OUT.PRINTLN(CERTIFICATE.GETISSUERDN()); // 释放资源 IOUTILS.CLOSEQUIETLY(IN); } } }
注意:上述代码需要确保根证书在LINUX系统上存在并且可以访问。如果证书不存在或无法访问,可能会导致证书解析失败。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 向数据表用newid方式插入GUID问题
- ¥15 multisim电路设计
- ¥20 用keil,写代码解决两个问题,用库函数
- ¥50 ID中开关量采样信号通道、以及程序流程的设计
- ¥15 U-Mamba/nnunetv2固定随机数种子
- ¥15 C++行情软件的tick数据如何高效的合成K线
- ¥15 vba使用jmail发送邮件正文里面怎么加图片
- ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
- ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战
- ¥15 svpwm波形异常求解答