无需验证即可启用客户端证书传递

时间:2019-04-08 12:31:02

标签: kubernetes nginx-ingress

我正在尝试为Kubernetes配置nginx-ingress,以便将客户端证书无需验证即可传递到后端服务。

由于客户的要求,我们正在使用客户端证书进行身份验证,但是证书没有由服务器签名,因此,仅检查它是否在允许的证书列表中并不是真正的验证证书的工作。

在我们的测试服务器上,一切正常,在该服务器上,我们使用服务器CA证书签名的证书,但是在设置之后

nginx.ingress.kubernetes.io/auth-tls-verify-client: "off"

即使我们仍然拥有客户端证书,该证书也不再在请求标头中转发

nginx.ingress.kubernetes.io/auth-tls-pass-certificate-to-upstream: "true"

nginx-ingress甚至允许未经验证就通过客户端证书吗?

我希望禁用auth-tls-verify-client只会停止nginx-ingress验证证书签名并仍然通过它,但是它从请求中消失了。

1 个答案:

答案 0 :(得分:0)

我可以建议看看this issue

<块引用>

向入口资源添加 auth-tls-pass-certificate-to-upstream: true 时,传递给入口控制器的客户端证书不会转发到后端 pod。

显然,问题是

<块引用>

更多围绕在标头中传递客户端证书的标准化问题。我发现 nginx 正在将客户端证书传递给 Ssl-client-certificate 标头中的后端 pod。

在您的情况下,我建议检查证书的所有标头值,看看它是否以不同的名称存在。

最重要的是,请记住检查您是否使用标志 #include<stdio.h> #include<process.h> using namespace std; struct node { int data; struct node *next; }; struct node *head = NULL; void create_list() { struct node *curr = (struct node*) malloc(sizeof(struct node)); struct node *traverse; char choice = 'y'; int user_input; if (curr == NULL) { cout << "\nSORRY CAN'T ALLOCATE ANY MORE MEMORY :("; exit(0); } while (choice == 'y' || choice == 'Y') { cout << "\nENTER THE DATA FOR THE NODE\n"; cin >> user_input; curr->data = user_input; curr->next = NULL; if (head == NULL) { head = curr; } else { traverse = head; while (traverse->next != NULL) { traverse = traverse->next; } traverse->next = curr; cout << "\n" << traverse->next; } cout << "\nDO YOU WANT TO ENTER ANY OTHER NODES?\n\n"; cin >> choice; } } void display() { struct node *show; if (head == NULL) { cout << "\nTHERE ARE NO NODES TO SHOW\n"; } else { show = head; while (show->next != NULL && show != NULL) { cout << "\n" << show->data; show = show->next; } } } int main() { create_list(); display(); }

**启动了 nginx 入口控制器