问题标签 [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.
hyperledger-fabric - 在生产中使用没有相互 TLS 的 fabric-ca?
我想知道是否强烈建议在生产中使用没有相互 TLS 的 fabric-ca。
我计划运营一个结构网络,其中将自动添加许多对等点、应用程序和用户,并且不会使用加密工具。
相反,将使用第二个 fabric-ca 来颁发 TLS 证书。这些证书将用于 MSP fabric-ca 和对等方等的客户端身份验证。
TLS fabric-ca 不执行客户端身份验证,因为新用户将拥有注册 ID+机密但没有客户端证书。
我在这个UML 序列图中说明了注册过程。
图中的“用户”用于表示对等点、应用程序或用户。
java - Weblogic/Java 未在与 IIS 的相互 SSL 集成中发送客户端证书
我无法理解为什么 Weblogic/Java 没有在 SSL 握手期间通过 CertificateRequest 消息发送服务器(IIS 服务器)请求的客户端证书。
我已经检查并尝试了 SO 中的所有其他问题/答案,例如: Java 没有为相互 SSL 提供客户端证书? 和类似的。
我创建了一个名为 Identity.jks 的自定义密钥库,其中只有一个证书条目,并且我遵循了 WL 指南(以及我在 Internet 上可以找到的所有其他内容)来进行正确的设置。
以下是 SSL 握手的调试日志:
如您所见,服务器发送了一条CertificateRequest
消息,但由于某些原因Cert Authorities
是Empty
. 在这种情况下,客户端(Weblogic)不发送证书。如您所见,开发人员发出警告消息:
no suitable certificate found - continuing without client authentication
当我使用SoapUI
而不是 Weblogic 与服务器通信时,握手成功。SoapUI 发送包含在Identity.jks
密钥库中的证书。
是否可以SoapUI
减少限制并发送密钥库中存在的唯一证书,而 Weblogic 期望从服务器中找到某些内容Cert Authorities:
<Empty>
?
由于我已将 weblogic 设置为仅使用具有该别名的密钥,因此我希望它能够发送它...
任何人都知道 Weblogic 使用什么标准来查找匹配的客户端证书?
我对日志的解释是否正确?
欢迎任何想法/帮助。
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 连接时,我收到以下错误:
http - 在实现 PoolingHttpClientConnectionManager 时遇到问题
我正在尝试在我的 java 代码中实现 http 连接池,当我尝试使用它时,我得到了 Handshake 异常。如果我取出设置连接管理器的那一行,它就可以工作。这对我来说毫无意义。我正在使用这些 jar 文件: httpclient-4.5.2.jar httpcore-4.4.4.jar
使用连接池:
引发收到致命警报:handshake_failure异常:
连接池注释掉了:
它成功运行并返回我的值(在这里混淆):
我究竟做错了什么?谢谢
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 我可以成功连接服务器
kubernetes - 如何使用 Traefik 和 Kubernetes 启用客户端证书身份验证?
我一直在使用 Traefik 在 Kubernetes 集群上实现自动 https,而且效果很好!现在,我实际上想在 Traefik 级别禁用终止,让我的后端处理 https 以及客户端证书身份验证。
目前,这是我的设置
配置文件
这是我在 Kubernetes 上的入口
在过去的三个月里,这对我很有帮助,但是使用这种配置,我的后端无法在传入的请求中找到客户端证书。
通常,我会从端口 80 重定向到 443 升级。现在,当我尝试直接进入 443 时,它会出现内部服务器错误。当我尝试将其添加到入口注释时
任何帮助都将受到高度赞赏。
谢谢你。
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 配置的人的帮助。
谢谢你,萨努杰
traefik - 用于身份验证服务器的带有 X-Forwarded-Ssl-Client-Cert 标头的转发身份验证
使用 traefik.frontend.passTLSClientCert.pem=true 将 TLS 客户端证书传递到后端非常有效 - 但如果将客户端请求传递到身份验证服务器 (entryPoints.http.auth.forward),则客户端证书不会发送到身份验证服务器(至少不在 HTTP 标头中)。是否有可能将客户端证书转发到身份验证服务器,以便通过客户端的 TLS 证书对客户端进行身份验证?
android - android 可以签署 http/https 调用,以唯一标识执行请求的应用程序吗?
比如说,应用程序的 CORS。嗯,不是一回事,但是...
假设我已经上传了一个应用到 Play 商店,现在我希望我的服务器只接受来自这个应用的连接。
我该怎么做?
我对操作系统的期望是一些过程,例如在我的 http 请求中添加几个标头,指定市场中应用程序的 id,并使用 android 链或相应市场中的签名对整个请求进行签名CA 证书链-. 然后我的服务器可以验证请求来自正确的应用程序。
另外,操作系统可以添加一些经过认证的硬件信息,所以如果应用程序在模拟器中运行,我也可以拒绝服务。
当然,另一种方法是在应用程序中包含一个“秘密”,但它总是可以通过反编译进行逆向工程,不是吗?或者是否有一些与播放存储关联的密钥库可用于在向服务器发送 https 请求期间提供此机密?
第三种方法可能是使用 OAuth 登录的 azp 字段,但它可能再次被反编译破坏,而且它会强制用户登录。
apache - Apache - 客户端证书
客户端认证过程的目的是否只是为了证明您在 SSLCACertificateFile(在 conf 文件中)拥有的 CA 已为客户端担保?如果 CA 是众所周知的 CA,那么任何拥有该 CA 签名的公共证书的人都可以作为有效客户端通过?对整个客户端身份验证的事情有点困惑。