问题标签 [ssl-client-authentication]

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 回答
334 浏览

hyperledger-fabric - 在生产中使用没有相互 TLS 的 fabric-ca?

我想知道是否强烈建议在生产中使用没有相互 TLS 的 fabric-ca。

我计划运营一个结构网络,其中将自动添加许多对等点、应用程序和用户,并且不会使用加密工具。

相反,将使用第二个 fabric-ca 来颁发 TLS 证书。这些证书将用于 MSP fabric-ca 和对等方等的客户端身份验证。

TLS fabric-ca 不执行客户端身份验证,因为新用户将拥有注册 ID+机密但没有客户端证书。

我在这个UML 序列图中说明了注册过程。

图中的“用户”用于表示对等点、应用程序或用户。

0 投票
2 回答
990 浏览

java - Weblogic/Java 未在与 IIS 的相互 SSL 集成中发送客户端证书

我无法理解为什么 Weblogic/Java 没有在 SSL 握手期间通过 CertificateRequest 消息发送服务器(IIS 服务器)请求的客户端证书。

我已经检查并尝试了 SO 中的所有其他问题/答案,例如: Java 没有为相互 SSL 提供客户端证书? 和类似的。

我创建了一个名为 Identity.jks 的自定义密钥库,其中只有一个证书条目,并且我遵循了 WL 指南(以及我在 Internet 上可以找到的所有其他内容)来进行正确的设置。

以下是 SSL 握手的调试日志:

如您所见,服务器发送了一条CertificateRequest消息,但由于某些原因Cert AuthoritiesEmpty. 在这种情况下,客户端(Weblogic)不发送证书。如您所见,开发人员发出警告消息:

no suitable certificate found - continuing without client authentication

当我使用SoapUI而不是 Weblogic 与服务器通信时,握手成功。SoapUI 发送包含在Identity.jks密钥库中的证书。

是否可以SoapUI减少限制并发送密钥库中存在的唯一证书,而 Weblogic 期望从服务器中找到某些内容Cert Authorities: <Empty>

由于我已将 weblogic 设置为仅使用具有该别名的密钥,因此我希望它能够发送它...

任何人都知道 Weblogic 使用什么标准来查找匹配的客户端证书?

我对日志的解释是否正确?

欢迎任何想法/帮助。

0 投票
2 回答
2448 浏览

java - 如何在 Java 中使用来自 Azure KeyVault 的证书设置 SSLContext

我正在开发部署在 Azure App Service 实例上的 Java Web 应用程序。我需要调用一个 REST API,该 API 需要通过 SSL 进行相互身份验证来保护该 API。由于这是一个应用程序服务,我没有将证书和公钥分别添加到密钥库和信任库的奢侈,而这一切都必须通过代码完成。尽管使用 JCE 和 SSL,我还是设法编写了以下控制台应用程序,成功访问了安全 API(在其他 StackOverflow Q&A 的帮助下):

我需要从已存储证书的 Azure Keyvault 获取证书,而不是将 PFX 文件加载到 KeyStore 中。KeyVaultClient(来自 Azure 的 Java 客户端库)为我提供了一种获取 X509Certificate 对象的机制。是否可以使用 X509Certificate 对象而不是从 PFX 文件启动 KeyStore?

我的目标是为请求处理机制提供一个可重用的 SSLContext 对象,这样当我的 Web 应用程序接收到请求时,我可以使用它来调用外部的安全 API。而且我需要在不依赖文件系统中的任何文件和外部 JVM 密钥/信任存储的情况下执行此操作。

2018 年 7 月 5 日:跟进 GPI 的富有洞察力的建议,我手动构建了SSLContext

但是当我使用生成SSLSocketFactory的 HTTPS 连接时,我收到以下错误:

0 投票
1 回答
1259 浏览

http - 在实现 PoolingHttpClientConnectionManager 时遇到问题

我正在尝试在我的 java 代码中实现 http 连接池,当我尝试使用它时,我得到了 Handshake 异常。如果我取出设置连接管理器的那一行,它就可以工作。这对我来说毫无意义。我正在使用这些 jar 文件: httpclient-4.5.2.jar httpcore-4.4.4.jar

使用连接池:

引发收到致命警报:handshake_failure异常:

连接池注释掉了:

它成功运行并返回我的值(在这里混淆):

我究竟做错了什么?谢谢

0 投票
1 回答
538 浏览

c# - 具有基本和客户端证书身份验证的 WCF 客户端

我正在尝试与需要基本和客户端证书以使用 WCF 进行身份验证的 Web 服务端点集成。我根据网上的建议尝试了以下不同的设置,但我仍然收到“无法为具有权限 XXXXX 的 SSL/TLS 建立安全通道”。服务器使用 Windows 证书存储中已有的知名 CA。在代码中,我成功添加了 ClientCredentials.UserName.UserName 、 ClientCredentials.UserName.Password 和 ClientCredentials.ClientCertificate.Certificate 。

1)

结果:“无法为具有权限 XXXXX 的 SSL/TLS 建立安全通道”

2)

结果:结果:“无法为具有权限 XXXXX 的 SSL/TLS 建立安全通道”

3)

结果:HTTP 请求未经授权,客户端身份验证方案为“匿名”。从服务器收到的身份验证标头是“Basic realm="Realm"”。---> System.Net.WebException:远程服务器返回错误:(401)未经授权。

如何使用基本身份验证附加客户端证书,因为服务器期望基于将 clientCredentialType 设置为“证书”时返回的错误进行基本身份验证。

注意:使用 SOAPUI 我可以成功连接服务器

0 投票
0 回答
3734 浏览

kubernetes - 如何使用 Traefik 和 Kubernetes 启用客户端证书身份验证?

我一直在使用 Traefik 在 Kubernetes 集群上实现自动 https,而且效果很好!现在,我实际上想在 Traefik 级别禁用终止,让我的后端处理 https 以及客户端证书身份验证。

目前,这是我的设置

配置文件

这是我在 Kubernetes 上的入口

在过去的三个月里,这对我很有帮助,但是使用这种配置,我的后端无法在传入的请求中找到客户端证书。

通常,我会从端口 80 重定向到 443 升级。现在,当我尝试直接进入 443 时,它会出现内部服务器错误。当我尝试将其添加到入口注释时

任何帮助都将受到高度赞赏。

谢谢你。

0 投票
1 回答
174 浏览

ssl - 在 IBM WebSphere 中定制客户端认证

我们有一个在 WAS 8.5 服务器中运行的应用程序。该应用程序有两个外部服务调用,涉及 2 个不同的第三方系统,其中一个服务(Service2/Server2)需要客户端身份验证。

请参阅图表以供参考。

Server2 <-- Client --> Server1 握手图

对于 Server1,我们与他们共享了一个客户端证书,并且握手非常完美。

对于不需要客户端身份验证的 Server2,在握手期间失败。我们可以发现,在握手期间,服务器尝试对客户端进行身份验证(假设客户端身份验证在 Server2上受支持,但不是必需的)。由于客户端密钥库具有客户端证书,因此它被用于握手过程,该过程失败,因为该客户端证书不存在于 Server2 信任库中。

我的问题是,即使服务器支持客户端身份验证,是否可以不将客户端证书发送到 Server2。

希望这个问题可以理解。

注意 1我们对 Server1 或 Server2 没有任何控制权,我们不希望这些第三方服务进行任何更改以使其正常工作。

注意 2 :Service2可以在客户端密钥库中没有客户端证书的情况下完美运行。请参考 Serer2-Client SSL Handshaking 的图表,它工作得很好。 Client --> Server2 握手图

期待精通 Websphere SSL 配置的人的帮助。

谢谢你,萨努杰

0 投票
0 回答
818 浏览

traefik - 用于身份验证服务器的带有 X-Forwarded-Ssl-Client-Cert 标头的转发身份验证

使用 traefik.frontend.passTLSClientCert.pem=true 将 TLS 客户端证书传递到后端非常有效 - 但如果将客户端请求传递到身份验证服务器 (entryPoints.http.auth.forward),则客户端证书不会发送到身份验证服务器(至少不在 HTTP 标头中)。是否有可能将客户端证书转发到身份验证服务器,以便通过客户端的 TLS 证书对客户端进行身份验证?

0 投票
2 回答
1105 浏览

android - android 可以签署 http/https 调用,以唯一标识执行请求的应用程序吗?

比如说,应用程序的 CORS。嗯,不是一回事,但是...

假设我已经上传了一个应用到 Play 商店,现在我希望我的服务器只接受来自这个应用的连接。

我该怎么做?

我对操作系统的期望是一些过程,例如在我的 http 请求中添加几个标头,指定市场中应用程序的 id,并使用 android 链或相应市场中的签名对整个请求进行签名CA 证书链-. 然后我的服务器可以验证请求来自正确的应用程序。

另外,操作系统可以添加一些经过认证的硬件信息,所以如果应用程序在模拟器中运行,我也可以拒绝服务。

当然,另一种方法是在应用程序中包含一个“秘密”,但它总是可以通过反编译进行逆向工程,不是吗?或者是否有一些与播放存储关联的密钥库可用于在向服务器发送 https 请求期间提供此机密?

第三种方法可能是使用 OAuth 登录的 azp 字段,但它可能再次被反编译破坏,而且它会强制用户登录。

0 投票
1 回答
514 浏览

apache - Apache - 客户端证书

客户端认证过程的目的是否只是为了证明您在 SSLCACertificateFile(在 conf 文件中)拥有的 CA 已为客户端担保?如果 CA 是众所周知的 CA,那么任何拥有该 CA 签名的公共证书的人都可以作为有效客户端通过?对整个客户端身份验证的事情有点困惑。