我们已经建立了一个新的入口路由,需要TLS证书身份验证,并将其放置在自己的子域中,但我们发现证书管理器无法为其颁发证书。
使用此处提供的示例,我们生成CA证书和CA密钥,然后配置客户端证书:https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/auth/client-certs
在日志中,我可以看到所有. acme挑战
请求都返回403。我猜nginx拒绝了这些请求,因为Let's Encrypt无法为挑战请求提供客户端证书。我需要做些什么才能绕过ACME的客户端证书要求?
这里的问题是,我们实际上错误地配置了nginx.ingres.kubernetes。io/auth tls机密注释。它必须采用名称空间/名称格式,其中名称空间是包含包含客户端CA证书的机密的名称空间,名称是该机密的名称,但我们只提供了名称,因为机密与入口位于同一名称空间中。
我可以通过将nginx入口控制器配置转储到nginx.conf.txt来诊断问题,方法是:
kubectl exec <NAME OF INGRESS CONTROLLER POD> -n <INGRESS NAMESPACE> -- nginx -T | tee nginx.conf.txt
(改编自https://docs.nginx.com/nginx-ingress-controller/troubleshooting/#checking-the-generated-config)。
其中包括以下代码段:
## start server the.hostname.com
server {
server_name the.hostname.com ;
listen 80;
set $proxy_upstream_name "-";
set $pass_access_scheme $scheme;
set $pass_server_port $server_port;
set $best_http_host $http_host;
set $pass_port $pass_server_port;
listen 443 ssl http2;
# PEM sha: 66c07c44ba9637a23cd3d7b6ebce958e08a52ccb
ssl_certificate /etc/ingress-controller/ssl/default-fake-certificate.pem;
ssl_certificate_key /etc/ingress-controller/ssl/default-fake-certificate.pem;
ssl_certificate_by_lua_block {
certificate.call()
}
# Location denied, reason: invalid format (namespace/name) found in 'the-secret-name'
return 403;
}
## end server the.hostname.com
关键是这两行:
# Location denied, reason: invalid format (namespace/name) found in 'the-secret-name'
return 403;
这让我找到了这个秘密名字的注释。一旦我解决了这个问题,ACME就正常工作了。
我不熟悉SSL和证书。我一直在做关于客户端证书认证的研究。我看过这个和wiki。 因此,如果我必须为我的B2B REST服务实现客户端证书身份验证解决方案,我应该执行以下操作 要求客户端生成自己的私钥,并为其公钥生成证书(CA 颁发?)。通过电子邮件或 USB 闪存盘发送该证书。 在服务器端将客户端的公共证书导入信任存储区并启用客户端身份验证 在握手期间,客户端会出示其证书并进行身份验证,因为服务
整个周末我都在为这个问题苦苦挣扎,现在我跪下来希望你们中的一个天才能解决我的问题。 I short:我有一个ingress nginx控制器(图:nginx/nginx ingress:1.5.8),我正试图与之实现自签名的相互身份验证。 https方面工作正常,但我(我认为)遇到的问题是,入口控制器使用默认证书重新路由请求,入口使用默认CA进行验证(因为它找不到我的CA)。 所以…救命! 我在这
问题内容: 我正在尝试确保通过Internet进行通信的Java客户端/服务器应用程序的连接安全。我的想法是将SSL套接字与自签名证书和客户端身份验证一起使用。我做了以下事情: 服务器:包含新的自签名证书的密钥库。 客户端:包含新的自签名证书的密钥库。 服务器:包含导出的客户端证书的信任库(来自上面的项目符号)。导出客户端证书并将其导入服务器的信任库 客户端:包含导出的服务器证书的信任库(从第一个
我有一个用Java Spring写的应用程序运行在Wildfly 10上。我已经使用我的RootCA和客户端证书设置了基本的x509身份验证。 基于客户端的证书CN,我可以处理多个用户角色。 我想实现的是如何动态选择应该使用的客户端证书。访问https时会显示一个对话框(这是一个系统对话框——来自火狐)。但是这个对话框只显示一次,即使注销后,对话框也不会再次显示,最后一个客户端证书会自动选择。 即
不知道为什么我会得到假证书,即使证书是由我们使用certmanager加密正确颁发的 安装程序在阿里云ECS控制台上运行,其中一个Kube master和一个cube minion组成一个Kubernetes集群。 服务详情 Pod详细信息 已部署舵手证书管理器 正确签发证书 入口详细信息 Letsencrypt Nginx生产定义
问题内容: 我需要导入证书,以便向Spring Boot应用程序中的外部服务发出http请求。 我该如何设置Spring Boot来做到这一点? 那里有很多信息,但我发现所有这些都令人困惑。似乎我可能只需要创建类似“ truststore.jks”密钥库的内容并导入正确的证书,然后将一些条目添加到我的application.properties中即可。 问题答案: 打开您的终端或 回答所有问题。在