flask - Nginx Ingress:将客户端证书信息传递到后端
问题描述
我在我的 aks 集群中成功实现了一个带有 tls 认证的入口(https://docs.microsoft.com/en-us/azure/aks/ingress-own-tls),但我想传递客户端中包含的信息证书到后端。我确实尝试将注释添加到我的入口nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"
,但我的请求标头中似乎缺少信息(我只是request.headers
从我的烧瓶应用程序中打印内容)。其他标题正确显示,例如X-Forwarded-Proto: https
或X-Forwarded-Port: 443
。
有人可以确认注释的预期行为吗?
我是否还需要使用 tls 以某种方式配置后端?
编辑
我确实访问了入口 pod,并且在 nginx 配置中我找不到对 的任何引用ssl_client_s_dn
,我希望它是将证书信息传递到标头中的最佳候选者。
我尝试按照https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/customization/custom-headers中的步骤分配一些自定义标头,但这似乎也不起作用。
解决方案
nginx-ingress
您使用的是哪个版本?
至少在版本中0.30
,我也可以看到客户端的证书详细信息正确传递到后端。
的值作为默认 nginx 控制器设置ssl_client_s_dn
的标头传递Ssl-Client-Subject-Dn
,无需自定义。
这是我默认的内容/etc/nginx/nginx.conf
(从 ConfigMap 转换而来)
# Pass the extracted client certificate to the backend
proxy_set_header ssl-client-cert $ssl_client_escaped_cert;
proxy_set_header ssl-client-verify $ssl_client_verify;
proxy_set_header ssl-client-subject-dn $ssl_client_s_dn;
proxy_set_header ssl-client-issuer-dn $ssl_client_i_dn;
从后端角度看到的请求标头:
...
"Ssl-Client-Issuer-Dn": "CN=example.com,O=example Inc.",
"Ssl-Client-Subject-Dn": "O=client organization,CN=client.example.com",
"Ssl-Client-Verify": "SUCCESS",
"User-Agent": "curl/7.58.0",
"X-Forwarded-Host": "httpbin.example.com",
"X-Scheme": "https",
}
}
您可以随时添加自己的自定义标头,如此处所述
例子:
apiVersion: v1
data:
X-Client-Cert-Info: $ssl_client_s_dn
kind: ConfigMap
metadata:
...
在后端反映为:
...
"X-Client-Cert-Info": "O=client organization,CN=client.example.com",
"X-Forwarded-Host": "httpbin.example.com",
"X-Scheme": "https",
}
}
推荐阅读
- java - 建议从具体非泛型类中的泛型抽象类继承方法
- javascript - React Router V4 - 路由更改的初始状态
- javascript - asp.net _Layout.cshtml 仅在模型类型为 ______ 时加载脚本
- c - 为什么 sizeof 在尚不存在的变量上成功?
- ruby-on-rails - Pundit::AuthorizationNotPerformedError in PagesController#home
- matlab - 使用八度音阶的平移律幅度插值
- r - 如何对具有相同字符 ID 列但数值不同的列表求和
- c - 如何在函数 max_2d 中修复此参数?从 const int 到 int 的转换是错误
- javascript - 将触发器添加到 WordPress 用户角色选择或在更改时运行 JS
- html - 无法在 rails helper 中将 id 动态添加到 div 标签