问题标签 [sslsocketfactory]

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

java - 如何在 Apache HttpClient 4.5.3 自定义 SSL 实现中为 HTTPS 注册一组全局支持的协议?

假设我想将 Apache HttpClient 4.5.3 使用的支持的协议限制为仅 TLSv1.1。我可以通过以下代码轻松实现:

我检查了 -Djavax.net.debug=all enabled 并确认正在使用 TLSv1.1。但是对于我创建的每个 CloseableHttpClient 实例,我都需要执行上述操作。有没有办法设置一次此配置并对创建的所有 CloseableHttpClient 实例有效?如果我只执行以下操作:

它始终默认为 TLSv1.2,这可能是 HttpClient 默认值。

我的问题是我是否可以以一种甚至 HttpClients.custom().build();只使用那些指定协议的方式注册支持的协议。

我的示例代码来自:http ://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientCustomSSL.java

在旧的 HttpClient 3.1 中,我相信这可以通过以下代码来实现:

customFactory 是实现 SecureProtocolSocketFactory 的类的对象,该类在内部设置 SSLSocket 上的“启用协议”。上面的代码片段注册了“https”的处理程序,这就是我所理解的。

0 投票
1 回答
385 浏览

java - Java SSLSocket 的问题

我目前正在开发一个客户端-服务器项目。
出于安全原因,我决定应该使用 SSL。

我尝试将所有SocketServerSocket对象转换为它们的 SSL 变体,但无济于事。
当我使用SSLServerSocket并连接到它时,服务器端的套接字输出冻结在outputstream.write(byte[]).

以下是我用来创建 SSL 套接字的函数, 是ContextController.CONTEXT我切换 SSL 的快速方法:SSLContextConstants.DEBUG

Constants.DEBUG = true(即 SSL 关闭)时,它可以工作,但是当 SSL 开启时,它会在无限期地发送一些数据后冻结,如上所述。我怎样才能解决这个问题?

编辑
这是来源ContextController.CONTEXT:(
注意,我知道我应该使用实际TrustManager但首先我希望它能够工作)

编辑 2
这是它冻结位置的堆栈跟踪,请注意它不会崩溃,它会挂起:

我在后面的行放置了一个断点SocketStream.streamPacket(Packet) 181,但它永远不会到达它。

0 投票
1 回答
364 浏览

java - SSLSocket 握手异常没有通用密码套件

我在 StackOverflow 上到处搜索,但这些问题似乎与我的不同,我在修复它时遇到了很多麻烦。

现在,我的程序应该只使用 SSL 套接字建立客户端-服务器连接,其中客户端只发送一条消息并关闭(稍后我将添加更多内容)

我收到消息部分的问题和 No Cipher Suites in Common 错误。下面我将发布我的服务器和客户端代码以及输出。我正在使用 Ubuntu 16.04 和 Netbeans 8.2

服务器代码:

服务器输出:

客户端代码

客户端输出

大多数东西(比如 System.setProperty 的东西)是我测试我在这里读到的几个选项。.jks 是通过将 crt 和密钥文件获取到 p12 文件并将它们添加到 .jks 来生成的。

我真的没有想法,所以任何帮助表示赞赏。您需要的其他任何内容都可以询问。谢谢

0 投票
0 回答
206 浏览

java - 通过 tls 从 java 连接到邮件服务器不检查证书

尝试使用证书通过 TLS 连接邮件服务器,但即使我输入了错误的证书,连接也成功。我添加了这些属性:

我创建套接字工厂的方式:(我使用来自服务器的公共证书创建了新的密钥库。并创建了 socketfctory)

我错过了什么或错了什么?

0 投票
1 回答
68 浏览

android - 使用 SSLServerSocket 和 SSLSocket 进行通信时是否需要实现证书?

我有一个通过套接字进行通信的应用程序。现在,我需要分别更改用于接收和发送数据的 ServerSocket 和 Socket,以用于其各自的 SSL/TLS 实现。

我使用下面的代码将 ServerSocket 和 Socket 转换为 SSLServerSocket 和 SSLSocket,并保持其余代码不变。

由于我仍在学习如何保护移动应用程序通信,我怀疑这是否足以保护通信安全,或者我是否需要指定自定义证书?

0 投票
0 回答
107 浏览

android - 调用 SSLSocket#getInputStream 时出现 SSLHandshakeException(握手失败)

我正在测试在 Android 应用程序上运行时SSLSocket运行的服务器的连接。IntentService为此,我使用PacketSender发送带有数据的 SSL 数据包,当使用 Socket 而不是SSLSocket.

当试图从 PacketSender 接收数据时,应用程序设法接受连接,但在尝试调用时抛出异常(见下文)getInputStream

我按照这个答案尝试从普通切换SocketSSLSocket.

编辑:尝试为服务器应用程序实现自签名证书,但错误仍然存​​在。

0 投票
1 回答
1302 浏览

java - Android 6 及更高版本中的 Android SSLSocket 握手失败

我编写了一个基于 Java SSLServerSocket 的服务器,它接受连接并通过自定义二进制协议与 android 应用程序通信:

我使用以下参数运行服务器:

证书是使用以下构建公钥和私钥集的教程生成的: http: //judebert.com/progress/archives/425-Using-SSL-in-Java,-Part-2.html

此外,我通过使用 bouncycastle 构建信任库来使其与 android 兼容:

在此处下载 bouncycastle 提供程序:https ://www.bouncycastle.org/latest_releases.html

并将生成的 truststore.bks 移动到原始资源文件夹中。

在 Android 上,我使用以下代码构建一个SSLSocketFactory允许我导入生成的 bouncycastle 证书,该证书对服务器进行身份验证:

这适用于低于 6 的 Android 版本。我的问题是在版本 6 及更高版本上尝试使用套接字时出现异常:

我不确定这里发生了什么。在处理客户端证书的过程中似乎有一个失误,这可能是密码套件的不匹配吗?

我已经用 Java 服务器、Java 客户端和 Android 客户端组合了一个最小示例,以帮助在此处诊断此问题:

https://github.com/johncarl81/androidCA

0 投票
0 回答
77 浏览

android - SSLSocket enabledProtocols 不返回 tls v1.2

我正在测试 Android 4.2.2 (API 17) 并运行以下代码。

当我检查 SocketFactory 时,我看到如下:

在此处输入图像描述 为什么不显示TLSv1.2

我在 Android 6.0 上运行相同的代码,它确实返回TLSv1.2. 根据 SSLContext API 文档,TLSv1.2API 16+ 支持,Android 4.2.2 是 API 17。它应该返回TLSv1.2但不确定为什么它没有在enabledProtocols.

0 投票
1 回答
148 浏览

java - java rsa加密SSLSocket,android转java问题

我需要从安卓手机通过 SSLSocket(不是 http/https)连接服务器。我首先生成了带有私有/公共对的 jks 密钥库,然后生成了一个只有客户端公钥的 jks。然后我首先尝试将 SSLSocketFactory 从 java 设置为 java,然后我让它工作。Android 不接受我的 jks 密钥库,因此我将其转换为 bks 用于 android 端。但是,当我测试它时,服务器端会抛出一个

android端抛出一个

这是测试服务器的代码:

以下是工作 Java 客户端的代码:

这是不工作的android应用程序的代码:

有谁知道问题出在哪里?

0 投票
1 回答
775 浏览

groovy - HTTPBuilder - 无法在空对象上调用方法 withInputStream()

我有一个使用 HTTPBuilder 对 SSL 站点进行 RestAPI 调用的 groovy 脚本。要连接,我已将证书导入新的密钥库并使用 HTTPBuilder 支持页面 https://github.com/jgritman/httpbuilder/wiki/SSL中推荐的代码

这是代码:

}

我得到的回应是

我尝试提供密钥库的完整路径,但得到相同的结果。是我没有正确提供路径(我尝试了多次迭代)还是还有其他问题?