You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik代理Jenkins时Jira Webhook触发TLS握手EOF错误如何解决

修复步骤

  1. 修正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重新加载配置。

  1. 排查Jira侧TLS证书信任问题
    这是该类报错最常见的原因:你使用的是自定义私有证书/自签证书,Jira所在服务器的信任库中没有导入该证书,导致Jira发起HTTPS请求时验证证书失败,主动断开连接产生EOF错误。
    操作步骤:
  • 导出Traefik使用的根证书文件cert.cert
  • 将证书导入Jira运行依赖的JDK信任库,默认路径为$JAVA_HOME/jre/lib/security/cacerts,导入命令:
    keytool -import -alias jenkins-traefik -file /path/to/cert.cert -keystore $JAVA_HOME/jre/lib/security/cacerts
    
    默认cacerts密码为changeit
  • 导入完成后重启Jira服务生效
  1. 验证证书有效性
  • 确认你的证书SAN字段包含配置的<my_domain>,否则会出现域名不匹配错误
  • 确认Traefik挂载的证书文件权限正确,容器内可正常读取
  • 在Jira所在服务器执行curl命令验证:
    curl -v https://<my_domain>/jenkins/jira-trigger-webhook-receiver/
    
    如果返回证书不信任错误,说明上述证书导入操作未完成;如果返回200/403等HTTP状态码,说明TLS握手已经正常。
  1. 临时验证方案
    如果需要快速确认问题根因,可以先将Jira侧的Webhook地址改为HTTP协议:http://<my_domain>/jenkins/jira-trigger-webhook-receiver/,如果可以正常触发Jenkins任务,即可100%确认是TLS证书信任问题,无需排查其他配置。

内容的提问来源于stack exchange,提问作者Artur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:45:00