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

ssl - Tomcat 没有获取密钥库

我正在设置通过 SOAP Web 服务与外部系统通信的 tomcat 服务器(我为此使用外部系统存根和 apache Axis2 库)。外部系统通过 ssl 客户端/服务器身份验证进行保护。系统为我提供了 .pfx 格式的密钥库文件,其中包含两个证书。

我尝试过的事情:

我已经提取了这两个证书并添加到我的密钥库中。我在我的tomcat/bin/catalina.bat文件中添加了以下条目

使用上述配置,我的请求失败,在请求中找不到 X.509 客户端证书 HTTP 标头。

我启用了 ssl 日志,然后我发现 serverHelloDone 被打印出来,然后它说

“找不到合适的客户端证书 - 在没有客户端身份验证的情况下继续”

我在 SOAPUI 工具中尝试过同样的事情,我直接将 .pfx 文件配置为密钥库,并且在那里工作正常

Tomcat 和 SOPAUI 日志之间的区别在于 SOAPUI 可以成功竞争客户端身份验证,而 Tomcat 则不能。tomcat ssl日志中也缺少以下行

更新1 : 我从SOAPUI->项目视图-> WS安全配置->密钥库(这是工作配置)中删除了密钥库配置,并在soapui.bat文件中添加了上面提到的JAVA_OPTS条目,现在SOAPUI也给出了同样的错误。

任何人都可以帮助解决soap ui如何从项目视图中配置的密钥库中挑选和发送证书->密钥库

0 投票
0 回答
279 浏览

ssl - “找不到合适的客户端证书 - 在没有客户端身份验证的情况下继续”

我正在开发一个使用 SOAP Web 服务与某个外部服务器通信的 Java 应用程序。我使用了使用外部系统的 wsdl 生成的存根类。在外部系统上,他们已启用客户端身份验证并提供 .pfx 格式的密钥库文件

我已经使用 keytool 命令创建了新的密钥库,并将外部系统 .pfx 导入到我的密钥库中。我已在我的 tomcat 的 catalina.bat 文件中将密钥库路径和密码设置为 JAVA_OPTS

下面是入口

实际结果:

请求失败并出现错误 No X.509 client certificate HTTP header found in request 在 ssl 日志中显示 “找不到合适的客户端证书 - 继续没有客户端身份验证”

预期结果:握手应该正确完成,因为密钥库已提供给 tomcat。

注意:相同的 .pfx 密钥库适用于 SOAPUI 工具,因此密钥库中的证书是正确的

0 投票
1 回答
855 浏览

amazon-web-services - AWS API Gateway MTLS 客户端

有谁知道 AWS 现在是否提供以下功能请求或可能的解决方法?

AWS API Gateway MTLS 客户端身份验证

0 投票
1 回答
641 浏览

ios - 创建使用客户端证书的 iOS 12 NWConnection

我正在尝试设置一个执行客户端证书的NWConnection

但是我认为简单的.tls类 var 需要是一个涉及更多的NWParameters对象,但是对于我在那里创建的将客户端证书附加到参数的内容,我完全不知所措(文档非常稀疏)。我也不知道我是如何从 .crt/.pem 文件转移到应用程序以编程方式管理的文件的。

什么是如何配置NWParameters支持客户端证书的示例?

语境

我正在尝试设置客户端连接以使用客户端证书与MQTT代理进行通信。我已经能够使用命令行在 Linux 端对这一切进行概念验证。MQTT 代理设置为需要客户端证书,以及如下命令:

做得很好。但是 OpenSSL 是 iOS 上的一个黑匣子(对我来说),我不知道从这里去哪里。我已经能够让所有其他 MQTT 通信与我的NWConnection实例一起工作,包括服务器端 TLS,即使它是自签名的。

0 投票
0 回答
34 浏览

php - 如何从需要客户端证书身份验证的支持服务器获取信息?

backedn 服务器 URL 是https://www.example.com/order/?id=

我正在编写前端以将订单 ID 传递给该服务器并显示我返回的信息。

服务器 www.example.com 需要客户端证书身份验证。

如果我使用浏览器访问此 URL https://www.example.com/order/?id=123456

我可以选择我的证书,然后获取我想要的信息。

有什么办法可以做到这一点:

初始页面要求用户选择他们想在浏览器上使用的客户端证书并输入订单号 --> 将客户端证书和订单号传递给“ https://www.example.com/order/?id= ”以获得结果

我尝试使用 file_get_contents() 和 cURLs,但找不到传递客户端证书的方法。

- - - - -更新 - - - - - -

我已经更新了我的 Apache virtualHost 文件,现在我可以将客户端证书信息存储在环境中。

我应该怎么做才能将这些证书信息传递给后端服务器以通过身份验证?

0 投票
0 回答
2226 浏览

ssl - OpenSSL 客户端身份验证失败,需要受信任的证书

我正在关注F5 KB 文章以使用 openssl s_client 测试基于 SSL 客户端的证书身份验证,但它一直失败并出现此错误:

我正在尝试为此进行谷歌搜索,但无论如何都找不到与 SSL 客户端身份验证相关的太多信息。

我已将相同的用户证书导入我的浏览器,并且效果很好。

服务器是一个 f5 bigip 设备,具有来自 CA 的根证书,该证书已签署用户证书。

0 投票
0 回答
1557 浏览

react-native - React Native 应用程序中的客户端身份验证

我是 React Native 开发的新手。我制作了一个使用 fetch 方法调用 HTTPS POST API 的应用程序。之后,我从安全层开始,为此,我设法做到了:

  1. 确保我的应用程序调用我的服务器并且中间没有人。

  2. 确保只有安装了应用程序的客户端才能调用服务器上的 API

另一方面,我正在尝试建立双向 SSL。

为此,我在每种情况下都使用了:

它奏效了。

但我无法找到案例 2 的解决方案:

也就是说,如何让安装了应用的客户端才能调用API?

0 投票
0 回答
757 浏览

java - Java/Jetty:TLS客户端认证中如何选择签名算法

前言

OpenJDK 11.0.2 2019-01-15

我在使用 TLSv1.2 连接到 Jetty (9.4.14.v20151114) 服务器时使用相互身份验证,密码套件 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。

我的客户端使用标准的 Java TLS 机制:

我的客户使用智能卡支持的 PKCS11 密钥库:

问题

Jetty 会发送很长的支持签名算法列表,用于客户端身份验证。客户端通过调用来决定使用其中的哪一个:

这将选择签名方案 RSASSA-PSS。

后来在方法

客户端选择支持所选 RSASSA-PSS 算法的 java.security.Provider$Service。这个 RSASSA-PSS 服务的提供者是 sun.security.rsa.SunRsaSign。密钥库中使用的 SunPKCS11 提供程序不提供 RSASSA-PSS 服务。

问题是这个 SunRsaSign 提供者的服务不支持用于签名的基于 PKCS11 的私钥,我得到以下堆栈跟踪(手工复制,小心拼写错误):

问题

似乎选定的签名算法是由不支持客户端身份验证中使用的 PrivateKey 的 java.security.Provider 实现的。

有没有办法解决这个问题?我可以让客户端以某种方式选择与 PKCS11 密钥库(例如 RSA_PKCS1_SHA512)一起使用的客户端签名算法吗?我可以将 Jetty 服务器配置为不建议不起作用的客户端签名算法吗?

编辑

Jetty SSLContextFactory 配置(可能包含拼写错误):

0 投票
1 回答
37 浏览

authentication - 为什么微软提供“当前用户\个人\证书”和“本地计算机\个人\证书”证书?

1) 为什么微软提供“当前用户\个人\证书”和“本地计算机\个人\证书”证书?2) 在个人客户端身份验证的情况下,我们应该从哪个路径获取证书 3) 是否存在使用“本地计算机\个人\证书”证书的情况?

我对证书的两个位置都有疑问。客户端身份验证应该采用哪个。

0 投票
1 回答
552 浏览

traefik - 设置 Traefik 以仅使用 CLI 使用 Let's Encrypt 要求客户端证书

我正在尝试设置 Traefik 来做 SSL 客户端证书,就像我过去用 Apache 做的那样。但我似乎无法让它正常工作。我也在使用 Docker,这里是命令参数