问题标签 [mutual-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 回答
1425 浏览

applet - 用于与智能卡进行相互身份验证的 Java Applet

我需要开发一个 java 小程序,用于 Tomcat 6(服务器)和智能卡“ IDGo 300 ”(客户端)之间的相互身份验证。

为了做到这一点,我想到了以下方案:

  1. Tomcat(服务器)向 SmartCard(客户端)发送其数字证书(由 CA 签名)的请求。
  2. 客户端输入 PIN 并选择智能卡上的可用证书,然后 Applet 将其证书(由 CA 签名)发送到 tomcat。tomcat 验证数字证书,如果正确则发回他的证书。
  3. 小程序验证服务器的证书,如果证书正确,则向服务器发送确认。
  4. 服务器为客户端提供完全访问权限以使用 Web 应用程序。

我有一些问题:

  1. 这个方案可行吗?
  2. 我想通过我的小程序管理所有内容,当客户端断开智能卡时,他将失去对服务器的访问权限。
0 投票
0 回答
1818 浏览

java - 使用soapUI但不是独立Java客户端的相互SSL

我试图让相互 SSL 从 Java 客户端工作。我的soapUI 配置适用于我在WS-security 配置中指定keystore 和truststore 的地方。

当我对具有以下系统参数的 Java 客户端执行相同操作时

我收到这个错误

我启用了这个:System.setProperty("javax.net.debug", "all");

从调试日志中我看到:

我该如何调试这个问题?

0 投票
1 回答
4337 浏览

ios - IOS相互认证

我正在尝试在 IOS 5 中实现相互身份验证,但我遇到了麻烦:

我以这种方式为服务器(无论是自签名还是使用假 CA,我总是遇到这个问题)和客户端生成了密钥、证书和 pkcs12:

当我在浏览器 (FF15) 中导入生成的 client.p12 文件时,它可以完美运行。所以问题不在前面的步骤中。

IOS端我试过这个例子:http: //vanjakom.wordpress.com/tag/nsurlconnection/

当我发现该示例不起作用时,这就是我所写的:

在这两种情况下,我都无法验证客户端。此外,我还在设备(iPhone/iPad)上安装了 server.crt 证书,但我一直收到“Error Domain=NSURLErrorDomain Code=-1200”。

有任何想法吗?谢谢你。

0 投票
1 回答
1866 浏览

c - OpenSSL向具有证书颁发机构的客户端提供服务器证书?

我正在尝试学习如何使用 OpenSSL 库(total newb)并且在弄清楚如何让客户端连接到具有正确证书的服务器时遇到了一些麻烦,如果证书不正确则失败。我的用例是构建一个没有中央 CA 的 p2p 应用程序,所以我不能依赖 CA 证书。具体来说,服务器和往常一样有一个cert/key,客户端会通过请求其他p2p节点投票来确定一个服务器的证书。

我有两个具体问题:

  • 在下面的代码片段中,如果我注释掉“密码列表”下面的选择,我希望客户端无法连接。它仍然有效!我错过了一些东西,对吧?
  • 有没有办法让客户端使用服务器证书,并且足以打开连接?即没有密钥,没有CA?

客户:

服务器:

我的代码在https://github.com/a34729t/exp/tree/master/tun2udp/dtls;它由 Robin Seggelmann 的 DTLS 示例构建而成。具体来说,我正在使用 server3_oo.c。

0 投票
1 回答
1838 浏览

ssl - 使用 Heroku 获取相互 SSL 身份验证信息

我正在寻找与 Heroku 建立相互 ssl 身份验证,其中第三方调用 Heroku 端点,而 Heroku 的响应取决于哪个第三方调用 Heroku。我需要使用双向 ssl,因为第三方非常注重安全。

我有一个第三方使用证书调用 Heroku(通过 SSL 插件)并且能够得到响应。因此,相互 SSL 握手似乎奏效了。

但是,我的应用程序无法确定哪个第三方调用了 Heroku,因为没有要检查的证书信息。我查看了 Heroku 标头以查看 SSL 插件是否提供了其他信息,但找不到任何东西。

有没有办法通过 Heroku 的任何其他方法从相互 sal 握手中获取证书信息?

0 投票
0 回答
1058 浏览

perl - 具有自签名客户端证书的相互身份验证 SSL

在我们公司,我目前有通过 SSL 在 HTTPS 上连接到外部供应商的脚本。该脚本仅执行服务器身份验证。就是这个:

这是根据需要工作的,但由于严格的合规性和安全性,我们现在需要通过自签名证书使其成为“相互身份验证”。我尝试将HTTPS_DEBUG 更改为 1并在其后添加以下 2 行。'myserver.crt' 是我创建 CSR 后的内部自签名证书(我希望这些细节是正确的,我不精通 SSL,这很明显):

但是当我运行脚本时出现以下错误:

我究竟做错了什么?

感谢您的任何帮助!

0 投票
1 回答
10100 浏览

ssl - ActiveMQ 相互 SSL 认证

我正在尝试设置 ActiveMQ 进行相互身份验证,客户端需要证书才能将消息传递给代理。我在代理上创建了一个密钥库和一个信任库,并导出了一个复制到客户端的证书。在客户端我做了同样的事情,虽然我使用的是 NMS,所以我只使用导出的证书,我添加到代理的信任库中。我还将证书添加到其他本地计算机受信任的根证书中。
经纪人的配置是这样的:

amq 服务wrapper.conf
wrapper.java.additional.8=-Djava.security.auth.login.config="%ACTIVEMQ_CONF%/login.config"

${activemq.base}/conf/login.config

${activemq.base}/conf/users.properties 有

${activemq.base}/conf/groups.properties 有

在 NMS 客户端的 appSettings 中,我使用它来连接:

如果我在代理中没有 jaasCertificateAuthenticationPlugin,我可以通过 ssl 连接,但是使用它(这是我的想法)我收到一个错误,它在Apache.NMS.ActiveMQ.Connection中失败 Gets an ExeptionResponse: "java .lang.SecurityException:无法在没有 SSL 证书的情况下验证传输。”
// Send the connection and see if an ack/nak is returned.
Response response = transport.Request(this.info, this.RequestTimeout);

跟踪显示:

在经纪人中说:

好吧,我错过了什么?它说“没有 SSL 证书的传输”,但它在客户端连接期间选择它,并且它在代理的信任库和根证书中。

使用 NMS 1.6.0 和 activeMQ 5.8.0。
我还在 java 中尝试了一个简单的客户端,结果相同。

有人有什么想法吗?谢谢。

11月12日编辑

好的,我又试了一次。我看到我没有添加到代理的 transportConnector ssl:

我尝试了 java 客户端,它可以发送,但我仍然收到 NMS 客户端错误(相同的配置):

在经纪人那里我得到了空证书链

我在彼此的信任库和本地计算机受信任的根 CA 中都有证书……还需要什么?如果不存在,它应该在哪里找到自签名证书的证书链?

0 投票
1 回答
1538 浏览

python - 如何使用 Python 的 socketserver.TCPServer 强制相互身份验证?

我想向互联网公开一个用 Python 编写的简单 TCP 服务器。要对客户端进行身份验证,我想同时依赖客户端和服务器证书。socketserver.TCPServer 是否默认支持这种模式?如果没有,您能否建议如何扩展服务器以实现相互身份验证?

0 投票
2 回答
2528 浏览

java - 嵌入 Jetty 时如何将 AxisConfiguration 传递给 AxisServlet

一些背景:

我正在尝试对我们公开的一些 Axis2 服务使用 SSL 相互身份验证。问题是 Axis2 内置服务器不支持该功能。所以我想使用嵌入式 Jetty 来实现这一点并在其中部署 AxisServlet。

问题:

似乎无法将 AxisConfiguration(包含所有可用服务的定义)直接传递给 servlet。

我是如何尝试的:

这种方法的问题是 AxisServlet 的 init(ServletConfig) 方法永远不会被调用,所以每当我尝试在 8080 上调用服务时都会出现 nullPointer 异常:

根据 Axis2 源代码,发生这种情况是因为配置上下文从未在 AxisServlet 中设置。所以现在最大的问题是:

1)是否可以直接在 AxisServlet 中设置配置上下文?我没有找到任何这样做的方法

2)为什么 Jetty 不发送 init 参数,也不在 servlet 上调用 init(ServletConfig config) 方法?我用调试器确认它永远不会被调用。

0 投票
0 回答
834 浏览

java - ClientKeyExchange 后 JAX-WS 相互验证失败

它的短处......

我有一个 JAX-WS 服务驻留在使用 SSL 的 Web 服务器上,并且需要相互身份验证。

首先测试相互认证是否正常工作,我将客户端证书导入浏览器。然后我将浏览器指向受保护的站点,它成功连接并检索内容。

然后我编写了java代码来连接到同一个网站上的服务。我将相同的证书导入到 java 密钥库文件 (jks) 中,我收到 TLSv1 警报:致命,handshake_failure。

我做了一个

发现ClientHelloServerHello都成功了。然后它继续执行ClientKeyExchange,我看到了 SESSION KEYGEN。然后它转到CertificateVerify,这就是致命的握手失败发生的时候。

我不知道为什么浏览器可以工作而 java 应用程序不能工作。

我在 Java 1.6.0_45 上运行,尽管我在 Java 7 上尝试了相同的代码以获得相同的结果。

请参阅下面的更多细节。


它的长....

这很长,我包含了用于加载密钥和信任库的代码,最后包含了 javax.net.debug 输出。

为了支持动态加载密钥库和信任库,我创建了一个自定义 SocketFactory。

抽象的适配器如下:

适配器的具体实现是:(在这个测试用例中,我从磁盘加载密钥和信任存储,但最终我们计划将它们作为 blob 存储在数据库中。)

然后我有一个类,它将 SSL 套接字工厂放入开发人员的 JAX-WS 上下文中。

这是创建服务代理:

最后把它们放在一起,我打电话给服务......


这是调试的输出,数据已修改,因为我们使用的是非自签名的真实证书...