我有 traefik 设置来使用自签名证书代理 kibana 后端。每当我访问后端时,我都会在浏览器中收到“内部错误”,并且在 kibana 日志中看到以下错误消息。
{"type":"log","@timestamp":"2018-02-04T03:56:26Z","tags":["connection","client","error"],"pid":1,"level":"error","message":"139782929405760:error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:../deps/openssl/openssl/ssl/s3_pkt.c:1493:SSL alert number 42\n139782929405760:error:140940E5:SSL routines:ssl3_read_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:1216:\n","error":{"message":"139782929405760:error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:../deps/openssl/openssl/ssl/s3_pkt.c:1493:SSL alert number 42\n139782929405760:error:140940E5:SSL routines:ssl3_read_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:1216:\n","name":"Error","stack":"Error: 139782929405760:error:14094412:SSL routines:ssl3_read_bytes:sslv3 alert bad certificate:../deps/openssl/openssl/ssl/s3_pkt.c:1493:SSL alert number 42\n139782929405760:error:140940E5:SSL routines:ssl3_read_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:1216:\n\n at Error (native)"}}
这是我的 docker-compose 文件:
---
version: '3.0'
services:
traefik:
image: traefik:1.5-alpine
command: --web --accesslog --docker --docker.watch --docker.domain=localhost --logLevel=ERROR --entryPoints="Name:http Address::80"
ports:
- "80:80"
- "8080"
labels:
- "traefik.frontend.rule=Host:monitor.localhost"
- "traefik.port=8080"
- "traefik.frontend.entryPoints=http"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /dev/null:/traefik.toml
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-platinum:6.1.3
container_name: elasticsearch
ports:
- "9200"
labels:
- "traefik.frontend.rule=Host:es.localhost"
- "traefik.frontend.entryPoints=http"
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
- ELASTIC_PASSWORD=changeme
cap_add:
- IPC_LOCK
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
kibana:
image: docker.elastic.co/kibana/kibana:6.1.3
container_name: kibana
ports:
- "5601"
labels:
- "traefik.frontend.rule=Host:kb.localhost"
- "traefik.frontend.entryPoints=http"
- "traefik.protocol=https"
links:
- elasticsearch
environment:
- SERVER_SSL_ENABLED="true"
- SERVER_SSL_CERT=/usr/share/kibana/config/kibana.example.org.crt
- SERVER_SSL_KEY=/usr/share/kibana/config/kibana.example.org.key
depends_on:
- elasticsearch
如何让 traefik 使用自签名证书?我在设置中遗漏了什么吗?
最佳答案
我自己也一直在处理此类问题。 Traefik 目前不支持 TLS 参数的每个后端配置,除非用于客户端身份验证传递。当前为后端反向代理路由提供的唯一自定义是使用全局 insecureSkipVerify
bool 设置(请参阅 Traefik 的 Commons 文档中的简短简介)。
我尚未验证这一点,但我相信 --insecureSkipVerify=true
将是在 Traefik 的 command
节中传递以启用此功能的正确标志。
请注意,这将影响所有后端连接,并可能让您遭受中间人攻击。问题#3038在 Traefik 的 GitHub 存储库上跟踪了一个设计思想,该思想将使每个后端都可配置。请随意为此功能投票或发布 PR。
关于kibana - 具有自签名后端的 Traefik,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48604588/