问题标签 [mtls]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2827 浏览

docker - 带有 HTTPS 和证书的 K8s 就绪探针

我有一个托管在 k8s 上的 spring boot 应用程序,并在应用程序本身上强制执行 mTLS。我可以通过在 Ingress 级别执行 SSL 终止然后再次将证书转发到 springboot pod 来对连接执行 mTLS。

问题是,Liveness 和 Readiness 探针目前不确定如何在就绪/活跃度探针中发送证书?

任何帮助,将不胜感激。

0 投票
1 回答
78 浏览

java - 在相互 TLS 的情况下,如何从 java 密钥库中选择正确的 SSL 证书以便发送到相应的端点

我有一个需要客户端证书(双向 TLS)的 HTTPS 端点。我创建了一个keystore使用KeyStore Explorer工具并将客户端证书和私钥插入其中(条目有一个别名,即一些随机字符串)。

然后我将该密钥库附加到 RestTemplate ,我的问题如下:

当对特定端点进行调用时,如何从密钥库中获取正确的条目(证书)?如果我在密钥库中插入了多个证书,以便只有在向适当的端点(域)发出请求时才应该提取它们中的每一个,该怎么办。

0 投票
3 回答
1444 浏览

amazon-web-services - MTLS Cloudfront/ApiGateway AWS

没有找到任何有关如何实现 Cloudfront + MTLS 或 Api Gateway + MTLS 的材料。可能吗?如果没有,是否有其他方法可以使用 CloudFront + ApiGateway 实现 MTLS?

0 投票
1 回答
5900 浏览

ssl - 在 Kubernetes 和 NGINX 中使用自签名证书设置 mTLS

我有一个托管 REST 回显服务的 Kubernetes 集群 (AKS)。该服务通过 HTTP 运行良好。我正在使用 NGINX 入口来路由流量。我现在想通过 HTTPS 和 mTLS 设置此服务,因此强制客户端指定一个证书以便能够与 echo 服务进行通信。这是一个 POC,所以我使用的是自签名证书。

我需要设置哪些 Kubernetes 组件才能实现这一目标?我阅读了 NGINX 文档,但无法理解是否需要在 Kubernetes 集群中创建证书颁发机构/证书管理器并使用它来配置入口服务以执行 mTLS 步骤。我可以在入口处终止 SSL(在执行 mTLS 之后)并允许从入口到回显服务的不安全通道。

我希望有这种设置经验的人可以提供一些指导。

谢谢!

0 投票
1 回答
291 浏览

ssl - OpenShift + Istio 中的 mTLS(客户端证书)

OpenShift 中部署了一个应用程序 (Java)。istio-ingress-gateway 也已配置。我的任务是使用带有 mTLS 的 https 协议调用我的服务。目前,我在 tls 块的入口网关中有以下设置:

据我了解,我想通过 Google Chrome / Postman / curl 调用我的服务,为此我需要根据 openshift 中指定的证书生成客户端证书并将其放入调用客户端。我的问题是如何从中生成客户端证书以及如何将其放在调用者身上?

0 投票
2 回答
595 浏览

authentication - Kubernetes 上微服务间身份验证的最佳实践?

我正在编写一个要部署在 Kubernetes 上的服务。客户端将是其他服务,而不是人,这些服务可能位于其他命名空间甚至集群中。我的目标是:

  1. 验证调用服务
  2. 授权调用服务
  3. 根据调用服务的身份应用一些策略(如配额)

我知道 Kubernetes 没有提供真正帮助解决这些问题的服务,我需要在我的服务中构建一些明确的东西。我想了解当前的最佳实践是什么,以及如何最大限度地利用 Kubernetes 或生态系统中的可用功能,以实现这些目标,同时最大限度地减少编码和管理负担。我考虑过的几个选项:

  • 自定义用户名/共享秘密。我可以将共享密钥传递给所有调用服务,然后编写我自己的自定义代码来验证共享密钥是否匹配。我认为将这些作为不记名令牌传递是正确的举动。使用 Kubernetes 服务帐户和角色对象是否是这些共享机密的合理容器?如果是这样,是否有使查找、关联和策略工作更容易的库?

  • 智威汤逊。JWT 似乎更倾向于传递声明,例如最终用户身份,并且似乎要求所有参与组件共享相同的 JWT 机密。由于我不希望 call-service-foo 能够作为 call-service-bar 进行身份验证,因此尚不清楚 JWT 是否正确。想法?

  • mTLS。我可以为所有参与的服务颁发 TLS 证书。我可以使用哪些组件来自动颁发这些证书?我应该尝试使用 Kubernetes 服务帐户或角色对象来管理这些,还是滚动我自己的 CRD?

  • 伊斯蒂奥。看起来 Istio 可以透明地做很多这样的事情,但到目前为止,我发现的所有解释这一点的资源似乎都假设透明性是一个目标。但是,由于我需要调用服务的身份,是否可以从 Istio 中获取?如果我的呼叫者不在我的集群中,这可以工作吗?

  • 尖顶(spiffe.io)。这看起来很适合我的用例,但它似乎很新,我不知道人们对它有多少经验。

这些选项中的任何一个(并请纠正我对其中任何一个的理解)作为最佳实践脱颖而出,还是我应该考虑其他选项?

谢谢!

0 投票
1 回答
307 浏览

proxy - 使用 Envoy 在网络之间建立隧道

对于混合云用例,我们正在研究 EnvoyProxy 是否适合作为跨本地防火墙移动数据的解决方案。预期的设置如下:

  • 应用 A 位于本地网络中,没有直接的出站或入站 Internet 连接
  • App B 位于云端
  • 一个特使代理(PC)被放置在云中
  • Envoy 代理 (PA) 放置在本地网络中,并配置为允许与 PC 的出站网络连接
  • PA 创建到 PC 的开放式双向认证 TLS 连接,有效地在它们之间创建隧道
  • App B 在 PC 上调用一个 API 端点,该端点通过开放的 TLS 连接路由到 PA,并由 PA 转发到 App A

使用 Envoy 将数据路由到上游集群是有据可查的。但是,我们想知道 Envoy 是否能够在两个代理实例之间建立 TLS 连接并在两个方向上使用该通道。限制是这个 TLS 连接只能从一个方向(出站)建立。

如果这是可能的,有人能指出我正确的方向吗?

亲切的问候, Joost

0 投票
2 回答
1210 浏览

java - MTLS 和 http 客户端连接池使用情况

背景

  • 我需要为各种客户端连接到服务器。
  • 每个客户端连接都应使用唯一的 TLS 证书。
  • MTLS 在服务器上就位。
  • 我想使用连接池来改善延迟。

使用以下 http 客户端

我的假设 在管理连接池中的连接时,在选择连接时,应在选择连接池中的相同连接之前考虑客户端证书。我不希望使用 clientB TLS 证书与 clientA 建立连接,反之亦然。

问题 这个假设是真的吗?

场景 1)

我将每个路由的最大连接数设置为 2。我为客户端 A 调用 MTLS 安全服务器。(池中的一个连接)我为客户端 A 调用 MTLS 安全服务器。(池中的两个连接)这不应该重用第一个连接吗?

方案 2)

我将每个路由的最大连接数设置为 2。我为客户端 A 调用 MTLS 安全服务器。(池中的一个连接)我为客户端 B 调用 MTLS 安全服务器。(池中的两个连接)

但是,第二次调用似乎没有进行完整的握手,而是使用了 clientA 证书。

我希望第二次通话需要完整的握手,并且无论如何连接都不会相关。

这是预期的行为吗?我在这里遗漏了一些明显的东西吗?

更新了更简单的测试用例

我们现在使用的是 http 上下文,所以我附上了更新的日志。我也简化了测试用例,现在它每次应该使用不同的客户端证书时连接到同一个服务器两次。

该应用程序正在使用 spring boot,并且有一个 restTemplate 和一个 httpClient。

它使用 PrivateKeyStrategy 来决定在与服务器通信时使用什么私钥/证书。

第一个连接使用密钥别名“e2e_transport_key_id_franek”(您将在日志中看到这一点)

第二个连接应该使用别名'e2e_transport_key_id_pdw'(在日志中从未见过)

我们正在建立的第二个连接应该使用别名为“e2e_transport_key_id_pdw”的密钥/证书,但是会话已恢复,请参见第 448 行尝试恢复会话。这意味着我们不能使用 PrivateKeyStrategy 来选择要使用的客户端证书。

如何强制客户端连接不为我们打算使用不同客户端证书的连接重用会话?

客户端日志 https://pastebin.com/zN0EW3Qy

0 投票
6 回答
959 浏览

kubernetes - 安全 mTLS 健康检查端点上的 Kubernetes 活跃度探测

我需要一些帮助来解决特定的 Kubernetes + mTLS 问题。

请问如何使 Kubernetes 活跃度探测在安全的 https mTLS 健康检查端点上工作?

我的应用程序是一个 Web 应用程序,其中健康检查端点通过特定端口公开,与其他业务端点相同的端口。

根据安全性、审计和合规性审查,我必须通过 mTLS 保护我的所有端点,即使是简单而无害的健康检查端点。

根据安全、审计和合规审查,我不能公开任何其他端口,比如在 https 端口 1 上做我的业务端点,但在 http 端口 2 上做健康。

因此,这是失败并将我的应用程序标记为关闭(因为它通过简单的 http,端点是 https)

只是为了在测试期间确认,我们禁用了 https 和 mTLS,启用了普通的旧 http,一切都运行良好,但我们根本无法做到这一点。

请问如何解决这个问题?

谢谢你。

0 投票
0 回答
32 浏览

node.js - 连接到 Heroku 时,为什么在参数列表后出现“缺少 )”?

我的 MONGO_URI

我的 dotenv 中没有 MONGO_URI。我只有 DB_USERNAME 和 DB_PASSWORD 和 PORT

我的错误信息:

或者我应该忽略纠正这个问题,因为使用 Heroku 我必须使用 MTLS PostgreSQL?

就在上述错误消息之前,我收到: