我无法更改通过 Traefik 使用 Docker 托管的 Sonatype Nexus 服务器的默认 TLS 选项

问题描述 投票:0回答:1

我有一个托管在 docker 中的 Nexus 服务器,以及一个 Traefik 实例。

如果在端口 443 的域上运行testssl,我会得到以下信息,表明它仍然支持 TLS1.2:

 Service detected:       HTTP

 Testing protocols via sockets except NPN+ALPN

 SSLv2      not offered (OK)
 SSLv3      not offered (OK)
 TLS 1      not offered
 TLS 1.1    not offered
 TLS 1.2    offered (OK)
 TLS 1.3    offered (OK): final

这是我的 traefik.yml 文件:

log:
  level: ERROR

entryPoints:
  web:
    address: :80
  websecure:
    address: :443

http:
  routers:
    http-catch-all:
      rule: hostregexp(`{host:.+}`)
      entrypoints: web
      middlewares:
        - always-https
  middlewares:
    always-https:
      redirectscheme:
        scheme: https

providers:
  docker:
    exposedByDefault: false

certificatesResolvers:
  myresolver:
    acme:
      dnschallenge:
        provider: route53
        resolvers:
          - "1.1.1.1:53"
          - "8.8.8.8:53"
      storage: /letsencrypt/acme.json

这是我的 docker-compose 文件:

services:
  traefik:
    image: traefik:v2.10
    container_name: traefik
    restart: always
    command:
      - "--configFile=/traefik.yml"
    ports:
      - 80:80
      - 443:443
    environment:
      - "AWS_ACCESS_KEY_ID=***"
      - "AWS_SECRET_ACCESS_KEY=***"
      - "AWS_REGION=us-east-1"
      - "AWS_HOSTED_ZONE_ID=***"
    networks:
      - nexus
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - "/docker/letsencrypt:/letsencrypt"
      - "/docker/traefik/traefik.yml:/traefik.yml:ro"
    logging:
        driver: "json-file"
        options:
            max-file: "5"
            max-size: "10m"
  nexus:
    container_name: nexus
    image: sonatype/nexus3
    restart: always
    ports:
      - 8081:8081
    networks:
      - nexus
    volumes:
      - /nexus-data:/nexus-data
    labels:
      - traefik.http.routers.nexus.rule=Host(`my-hostname`)
      - traefik.enable=true
      - traefik.http.routers.nexus.entrypoints=websecure
      - traefik.http.routers.nexus.tls=true
      - traefik.http.routers.nexus.tls.certresolver=myresolver
    logging:
        driver: "json-file"
        options:
            max-file: "5"
            max-size: "10m"

networks:
  nexus:
    external: true

我正在关注此页面,然后我将其添加到上面的 traefik.yml 文件的底部:

tls:
  options:
    default:
      minVersion: VersionTLS13

    mintls13:
      minVersion: VersionTLS13

对于 docker-compose.yml 文件中

nexus
服务的标签,我添加了:

- traefik.http.routers.nexus.tls.options=mintls13@file

但是,当我重新加载容器时,我会在日志中看到以下内容:

traefik  | time="2025-01-19T15:30:08Z" level=error msg="building router handler: unknown TLS options: mintls13@file" entryPointName=websecure routerName=nexus@docker
traefik  | time="2025-01-19T15:30:08Z" level=error msg="unknown TLS options: mintls13@file" entryPointName=websecure routerName=nexus@docker

并且我仍然从

testssl
获得相同的输出,表明它仍然支持最低 TLS 1.2。如果我删除
mintls13
traefik.yml
文件中的
docker-compose.yml
条目 - 意味着应根据 traefik 文档中的内容选择默认 TLS 最低版本 1.3:

默认选项是特殊的。当 tls 路由器中未指定 tls 选项时,将使用默认选项。

我没有收到任何错误,但

testssl
仍然告诉我它至少支持 TLS 1.2,因此显然也看不到我在
traefik.yml
中设置的 TLS 默认选项。

如果我同时关闭

nexus
traefik
服务,
testssl
在那里看不到任何内容,但如果我只启动
traefik
服务,我会得到与上面相同的
testssl
输出,并且具有最低 TLS 1.2

我哪里出错了?

ssl docker-compose nexus traefik
1个回答
0
投票

tls
(和
http
)是 Traefik 动态配置。将其放在单独的文件中,并通过
providers.file
(doc) 将其加载到静态配置中。

您的 http 到 https 重定向可以全局放置在

entrypoint
上,检查 简单的 Traefik 示例

请注意,您应该更新您的 Traefik 镜像版本。

© www.soinside.com 2019 - 2024. All rights reserved.