这个错误非常明确,它表示 Azkaban 在尝试建立 SSL/TLS 安全连接时,对方服务器返回的证书不被信任。
核心问题: 你的 Java 运行环境(JRE)的信任库(cacerts)中不包含签发对方服务器证书的根证书(Root CA)或中间证书(Intermediate CA)。因此,Java 无法验证该证书的合法性,出于安全考虑,它拒绝了连接并抛出了 certificate_unknown 错误。
这个问题通常发生在以下几种情况:
- 对方服务器使用的是自签名证书(自己签发的,非公共信任CA签发)。
- 对方服务器使用的是由私有 CA(公司内部或自己创建的证书颁发机构)签发的证书。
- 对方服务器证书链不完整(缺少中间CA证书)。
- 你的 Java 版本较旧,缺少较新的公共根证书。
解决方案(从易到难)
请根据你的实际情况选择以下方法进行排查和解决。
方法一:临时绕过证书验证(不推荐用于生产环境)
警告: 这种方法会完全禁用 SSL 证书验证,存在安全风险,仅用于临时测试或开发环境。
你可以通过设置 Java 系统属性,让 Azkaban 忽略所有 SSL 证书错误。
-
修改 Azkaban 启动脚本:
找到 Azkaban 的启动脚本(如azkaban-web-server.sh或azkaban-exec-server.sh)。
在JAVA_OPTS或executorCommand中添加以下参数:-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true \ -Djavax.net.ssl.trustStore= \ -Djavax.net.ssl.trustStorePassword=changeit \ # 最关键的是下面这两个参数 -Dcom.sun.webkit.nonValidCertificates=true \ -Dazkaban.trustAllSslCerts=true更“暴力”的通用方法是设置以下参数,但这会影响所有 Java 应用的 SSL 行为

最低0.47元/天 解锁文章
1895

被折叠的 条评论
为什么被折叠?



