我正在尝试为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验证证书签名并仍然通过它,但是它从请求中消失了。
答案 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();
}