Traefik代理Jenkins时Jira Webhook触发TLS握手EOF错误如何解决
修复步骤
- 修正docker-compose配置错误
你的现有配置存在两处基础错误:一是jenkins服务的缩进层级错误,被嵌套在traefik服务的配置下,导致Traefik无法正确识别Jenkins的路由规则;二是Host规则中的域名拼写错误。调整后配置如下:
version: "3.8" services: traefik: image: "traefik:v2.0" container_name: traefik command: - --log.level=DEBUG - --entrypoints.web.address=:80 - --entrypoints.web-secure.address=:443 - --api.dashboard=true - --providers.docker=true - --providers.file.directory=/configuration/ - --providers.file.watch=true ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./traefik/configuration/:/configuration/ - ./traefik/certs/:/certs/ # jenkins与traefik缩进一致,不属于traefik的子配置 jenkins: image: jenkins/jenkins:jdk11 restart: always container_name: jenkins volumes: - /var/jenkins_home environment: - JENKINS_OPTS="--prefix=/jenkins" labels: - traefik.http.routers.jenkins-http.entrypoints=web - traefik.http.routers.jenkins-http.rule=Host(`<my_domain>`) && PathPrefix(`/jenkins`) - traefik.http.routers.jenkins-http.middlewares=jenkins-https - traefik.http.middlewares.jenkins-https.redirectscheme.scheme=https - traefik.http.routers.jenkins.entrypoints=web-secure - traefik.http.routers.jenkins.rule=Host(`<my_domain>`) && PathPrefix(`/jenkins`) - traefik.http.routers.jenkins.tls=true
修改完成后执行docker-compose up -d重新加载配置。
- 排查Jira侧TLS证书信任问题
这是该类报错最常见的原因:你使用的是自定义私有证书/自签证书,Jira所在服务器的信任库中没有导入该证书,导致Jira发起HTTPS请求时验证证书失败,主动断开连接产生EOF错误。
操作步骤:
- 导出Traefik使用的根证书文件
cert.cert - 将证书导入Jira运行依赖的JDK信任库,默认路径为
$JAVA_HOME/jre/lib/security/cacerts,导入命令:
默认cacerts密码为keytool -import -alias jenkins-traefik -file /path/to/cert.cert -keystore $JAVA_HOME/jre/lib/security/cacertschangeit - 导入完成后重启Jira服务生效
- 验证证书有效性
- 确认你的证书SAN字段包含配置的
<my_domain>,否则会出现域名不匹配错误 - 确认Traefik挂载的证书文件权限正确,容器内可正常读取
- 在Jira所在服务器执行curl命令验证:
如果返回证书不信任错误,说明上述证书导入操作未完成;如果返回200/403等HTTP状态码,说明TLS握手已经正常。curl -v https://<my_domain>/jenkins/jira-trigger-webhook-receiver/
- 临时验证方案
如果需要快速确认问题根因,可以先将Jira侧的Webhook地址改为HTTP协议:http://<my_domain>/jenkins/jira-trigger-webhook-receiver/,如果可以正常触发Jenkins任务,即可100%确认是TLS证书信任问题,无需排查其他配置。
内容的提问来源于stack exchange,提问作者Artur
相关产品推荐
相关产品推荐

