kubernetes - 为 Minikube Ingress 启用 SSLv3
问题描述
我在用作 Minikube 插件的 Nginx Ingress 中启用 SSLv3 时遇到了一些问题。我已经在文档中阅读了如何做到这一点。它应该像添加单个地图一样简单。不幸的是,我并没有取得太大的成功。它在两个命名空间 - kube-system 和创建入口的第二个命名空间中添加了这个映射。
kind: ConfigMap
apiVersion: v1
metadata:
name: nginx-config
data:
ssl-ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA"
ssl-protocols: "SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3"
我是单独做的,甚至强制使用 nginx-ingress-controller 但什么也没发生。我还在 kube-system 命名空间中找到了有关 nginx-load-balancer-conf ConfigMap 的信息,并在那里添加了相同的条目,但它也没有帮助。
ssl-protocols 似乎是少数可以在ConfigMap中定义但不能通过annotations定义的属性之一。
所以我的问题是:我是在犯某种愚蠢的错误还是 Minikube 需要一些不同的配置?
我正在通过testssl.sh检查我的操作结果。
@更新
我已经列出了我的入口控制器配置,并且我的启用的 ssl 协议列表包含了我所引用的所有内容,所以我猜配置已被读取,但未使用。我也阅读了日志,但没有错误表明由于某种原因不能使用 SSLv3。
user@server:~$ kubectl exec -it -n kube-system nginx-ingress-controller-658b646bc5-4h562 cat /etc/nginx/nginx.conf | grep ssl
is_ssl_passthrough_enabled = false,
listen_ports = { ssl_proxy = "442", https = "443" },
ssl_protocols SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
@更新 2
添加 nmap 结果。
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-01 20:40 CEST
Nmap scan report for my-domain.com (xxx.xxx.xxx.xxx)
Host is up (0.038s latency).
rDNS record for xxx.xxx.xxx.xxx: xxxx.ip-xxx-xxx-xxx.eu
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.1:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 4096) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 4096) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 4096) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| Key exchange (dh 2048) of lower strength than certificate key
| Key exchange (secp256r1) of lower strength than certificate key
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (dh 2048) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 2048) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (dh 2048) - A
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 2048) - A
| TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA (secp256r1) - C
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 2048) - C
| TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 4096) - A
| TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 4096) - A
| TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 4096) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 4096) - A
| TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 4096) - A
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 4096) - A
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 4096) - C
| compressors:
| NULL
| cipher preference: server
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| Key exchange (dh 2048) of lower strength than certificate key
| Key exchange (secp256r1) of lower strength than certificate key
|_ least strength: C
Nmap done: 1 IP address (1 host up) scanned in 5.95 seconds
解决方案
推荐阅读
- vue.js - 导入 vue-bootstrap 时我在 vuejs 中遇到问题
- php - 使用 laravel 更新字段
- python - Python 代码运行 if 和 elif 语句的问题
- azure - 如何检查特定 Azure ARM 资源是否存在,如果不存在,则使用 PowerShell 创建它
- javascript - 如何在浏览器上下载文件
- javascript - 页面加载后如何更改 onclick-Events 上的可点击元素?
- javascript - 如何在 TouchableOpacity click 上导航到下一个屏幕
- flutter - 颤振中的“查看更多”文本部分
- telegram - AttributeError:“LabeledPrice”对象没有属性“to_dict”
- python-3.x - 窗户意外关闭