问题标签 [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 投票
0 回答
26 浏览

ssl - 如何在特使代理中处理应用程序发送的证书

要求是应用程序将在请求中传递证书,并且特使代理应该能够接收并发送到目的地并获得身份验证。

我已经从 envoy 的 LDS 和 CDS 文件中删除了 CA bundle 、 CA Cert 和 key 文件,并在 LDS 文件中添加了参数 x-forwarded-client-cert heder 。

通过 curl 脚本发送 CA 包、CA 证书和密钥文件,所有文件都转换为 .pem 格式。测试:- curl -v http://localhost/token --cacert .. --cert .. -- key ..

结果:-

证书没有通过请求。收到握手错误。

注意:- 在不从 LDS 和 CDS 文件中删除证书的情况下获得响应成功。

0 投票
0 回答
237 浏览

java - Spring Boot 中的 2 路 TLS 设置

我希望将 Spring Boot 与 2 路 TLS 集成。

我的问题是我想将其用于开发,我们可以在一个 Spring MVC 中使用 2 路 TLS,还是需要创建一个单独的客户端 MVC?

我使用此链接作为参考https://www.baeldung.com/spring-tls-setup在此配置 Tomcat 上的 TLS 如何配置服务器 XML 文件并找到它。

另外,如果我们只使用一个微服务进行双向 TLS,信任库证书应该存储在哪里?

以下是应用程序属性:

0 投票
1 回答
108 浏览

asp.net - 当前上下文中不存在名称“CertificateAuthenticationDefaults”

我正在尝试使用Microsoft Docs中的示例使用 ASP.NET core 3.1 配置 mTLS 身份验证,但出现以下错误

错误 CS0103 当前上下文中不存在名称“CertificateAuthenticationDefaults”

我用于 Startup.cs 的代码如下:

任何有关修复的建议将不胜感激

0 投票
1 回答
25 浏览

ssl - 处理自治数据库上的钱包到期?

查看 wallet.zip README 文件以及 orapki 实用程序中的到期日期后,是否有任何方法可以绕过钱包中的 SSL 证书。

如果无法绕过 SSL 证书过期,那么推荐的管理 SSL 证书及其过期的方法是什么?

0 投票
0 回答
442 浏览

java - 如何在 Java 中实现 mTls 连接?

我与其中一项服务建立了标准 tls 连接。我直接从浏览器保存它的公共证书。我创建了一个 ssl 上下文,在那里加载证书,并将 ssl 上下文放在对服务的请求中。现在我需要实现 mTls(mutal TLS)。据我在互联网上搜索了解,它也称为相互身份验证。但我找不到任何例子。目前,我有一个支持 mtls 的新网址及其浏览器证书。但是,当我使用此证书创建请求时 - 它会出现握手错误。请告诉我实现 mtls 还需要什么。为什么它过去只能通过 url 使用浏览器证书,但现在它在握手时皱眉?

0 投票
0 回答
54 浏览

spring-cloud - 如何在 Spring Cloud Gateway http 客户端中处理证书轮换

我在一些服务前面运行了 spring 云网关,这些服务需要 MTLS,并且我需要使用的证书会定期轮换。找到了一些讨论如何配置客户端证书等的帖子,但我对如何更新每次轮换证书时创建的 HttpClient 上的证书一无所知。

我找到的最接近的帖子是这篇关于如何重新加载 http 客户端 ssl 上下文的帖子。我无法使用那个 github 库并且查看代码逻辑似乎相当复杂。由于证书轮换很常见,想知道是否有更简单的方法来更新 Spring Cloud Gateway 上的证书

相关文章

有没有人有一个在 Spring Cloud Gateway/Spring WebFlux 中实现 x509 相互身份验证的简单示例?

Spring Cloud Gateway 转发客户端证书

任何帮助是极大的赞赏

TIA

0 投票
1 回答
54 浏览

istio - 使用 Istio mTLS 时,相同部署的 pod 是否共享相同的证书

在 Istio 中启用 mTLS 时,给定部署的每个 pod 都有一个证书。

我的问题是:相同部署的 pod 是否共享相同的证书,或者每个 pod 都不同?

0 投票
0 回答
89 浏览

kubernetes - IBM MQ Kubernetes Helm kdb

我在此链接之后使用 ibm-mqadvanced-server-dev helm chart 进行了 Kubernetes IBM MQ 部署。

  1. 假设我在 Kubernetes 的 ibm pod 中有一个 kdb。现在我想将客户端证书添加到密钥数据库中。但我不想访问 pod 的 bash 并执行 IBM 命令,例如“runmqakm -cert -add”。

  2. 我还想执行一些命令,如“SET CHLAUTH ...”,但类似于部分 (1),而不访问 bash。

有没有人有任何建议我该如何解决这些问题?

提前致谢。

0 投票
0 回答
37 浏览

asp.net - 信任使用 docker 和 ASP.net 核心 Web API 自行创建的 CA 证书

我正在努力为使用 docker 托管的 asp.net 核心应用程序实现客户端身份验证。通过遵循本教程,我在本地计算机上进行了客户端身份验证:https ://blog.kritner.com/2020/07/15/setting-up-mtls-and-kestrel/

但是一旦我从本地 Kestrel 切换到 Docker(也使用 Kestrel),它就不再工作了。邮递员显示以下错误:Error: socket hang up. 在我将 ca 证书安装到我的机器之前,我的本地 Kestrel 显示了同样的错误。我创建了我自己的 ca 和客户端证书,由这个 ca 签名(参见教程)。

所以我将证书复制到我的项目文件夹中,并在 docker 容器上执行了 bash。然后我执行了以下命令,我在几个帖子中找到了这些命令:

一开始我确实使用了 crt 文件而不是 pem 文件,但后来我发现了那个帖子:在 Windows 上为 docker 容器安装 SSL CA 证书

update-ca-certificates 命令返回以下输出,看起来不错:

但我仍然得到同样的错误(套接字挂断)

有人知道如何解决这个问题吗?我必须在其他地方安装证书吗?谢谢您的回答 :)

附加信息:

我使用的是asp.net core version 5。我没有在问题中包含docker文件,因为我没有更改它,所以它是VSStudioEnterprise2022原始创建的文件。我使用 WSL 和 Ubuntu 在我的 Windows PC 上运行 Docker Desktop。

我在 Startup.cs 中配置了 Kestrel,方法如下:

0 投票
0 回答
113 浏览

c# - 在自托管服务器上具有相互 TLS 身份验证的 ASP NET Web API

我正在尝试在自托管 Web 服务器上实施客户端认证验证。我的第一次尝试是检查请求是否包含客户端证书,但我被困在这里,因为Request.GetClientCertificate()总是返回null.

这是我的身份验证属性类。

我使用 Postman 作为 REST 客户端,使用 Postman 我发送客户端证书,如此处记录的使用证书。在 Postman 控制台中,我可以看到证书已成功发送。

我按照本教程使用 nodejs 创建了另一台服务器,以确保我的证书正常并且 Postman 客户端也正常。该服务器工作正常,我可以成功授权 Postman 客户端。

因此,我认为问题仅与 C# 自托管服务器有关。

不幸的是,我不能使用 IIS 或其他 Web 服务器,我只能使用这样的自托管设置或使用 OWIN Katana。

这是我当前的入口点和配置:

这些是我采取的一些额外步骤:

  • 将证书绑定到 HTTPS。netsh http add sslcert ipport=0.0.0.0:5005 appid={ca7f9e45-f183-414f-8baf-b02d88310766} certhash=bd759f39dc966e0ef131cafde4ab273e9c2d5134 clientcertnegotiation=enable
  • 为我的 URL 添加预订条目。netsh http add urlacl url=https://localhost:5005/ user=Everyone