Talend工具连接服务器报CertificateExpiredException错误如何解决?
Execution failed : java.security.cert.CertificateExpiredException: NotAfter: Sun Jan 17 05:36:12 IST 2021
[NotAfter: Sun Jan 17 05:36:12 IST 2021]
问题诱因
- 报错核心触发逻辑是Java安全校验机制在建立SSL/TLS连接时,检测到关联证书已超出有效期限,Talend底层基于Java开发,因此直接抛出异常终止执行。
- 两种常见场景会触发该报错:
- 要连接的目标服务器的SSL/TLS证书确实已在2021年1月17日过期,服务端未按时完成证书续期更换
- 目标服务端已经更新了有效证书,但Talend运行依赖的Java环境内置信任库
cacerts中存储的对应根证书/中级证书仍为过期版本,校验时匹配到旧证书触发报错
排查解决步骤
- 校验目标服务端证书状态
执行openssl命令查看服务端证书的真实有效期:openssl s_client -connect <目标服务器域名/IP>:<端口> 2>/dev/null | openssl x509 -noout -dates
若输出的NotAfter时间早于当前时间,说明服务端证书确实过期,联系服务端运维人员更新证书即可解决。 - 若服务端证书有效,更新本地Java信任库
- 先确认Talend使用的Java环境路径:打开Talend安装目录下的
Talend-Studio.ini文件,查看-vm参数对应的Java路径,避免修改到无关的Java环境 - 导出目标服务端的有效证书:
openssl s_client -connect <目标服务器域名/IP>:<端口> 2>/dev/null | openssl x509 -out <自定义证书名称>.crt - 将导出的新证书导入到对应Java的信任库中:
keytool -import -alias <自定义证书别名> -keystore "<上一步查到的Java路径>/jre/lib/security/cacerts" -file <导出的证书文件路径>.crt
信任库cacerts的默认密码为changeit,按提示输入密码后确认信任证书即可。
- 先确认Talend使用的Java环境路径:打开Talend安装目录下的
- 临时验证方案(仅用于测试排查,禁止在生产环境使用)
可在Talend作业的JVM启动参数中添加如下配置,临时跳过证书有效性校验,确认是否为证书问题导致的报错:-Dcom.sun.net.ssl.checkRevocation=false
内容的提问来源于stack exchange,提问作者Rathinam Nagalingam
相关产品推荐
相关产品推荐

