问题标签 [jsse]
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.
java - 无法在 SSLSocket 上写入数据?
我编写了一个使用 SSL 套接字的客户端/服务器套接字程序。服务器和客户端之间正在建立连接,但我无法在流上写入数据。以下是服务器和客户端的一段代码
服务器(这将创建 SSLServerSocket 并为每个客户端创建新线程)
服务器(线程处理代码)
客户端代码:
我在本地系统上测试此代码。我还使用监听器检查握手是否没有问题。当新客户端到来时,服务器接受来自客户端的连接并打印所有在 printSocketInfo() 方法中打印的信息。握手侦听器也收到通知。但是当我将数据从客户端套接字写入服务器时,什么也没发生,也不例外。请帮忙 。提前致谢
java - 是否可以在 Java 中编辑支持的密码套件列表
是否可以将密码套件添加到我可以使用的 Java 支持的密码套件列表中:getSupportedCipherSuites();
java - 如何关闭被阻止的 SSLSocket?
我有一个需要关闭所有连接的选项的 Java 服务器。作为其中的一部分,我在每个客户端套接字上调用 close()。我遇到的问题是这个调用有时会无限期地阻塞。
我只能通过模拟数百个用户来重现这一点,因此很难确定,但我怀疑当该套接字在写入时被阻塞时会发生这种情况。
我在另一个问题中读到,在套接字上调用 shutdownOutput() 会有所帮助,但 SSLSocket(我正在使用)不支持它。
还有其他方法吗?排队等待写入的任何数据是否被发送并不重要——我只需要终止连接。
java - SSLException:无效填充展开 TLS 应用程序数据
几个月前,我使用 NIO 和 SSLEngine 开发了一个 SSL Web 服务器。GET 请求和小型 POST 请求(大约 10KB 以下)一样有效。但是,当我发布比这更大的东西时,我会收到零星的 SSLException 异常。
例如,如果我发布一个小图像 (~16KB),我可以看到 3 条 TLS 记录代表应用程序数据。第一个是 HTTP 标头,另外两个包含有效负载。这是数据包有多小的感觉:
在我的代码中,我调用 SSLEngine 来解包/解密 TLS 记录(应用程序数据)。SSLEngine 在尝试解开第二条记录时经常会阻塞。这是错误:
这是引发错误的代码。
SSLException 在这一行被抛出:
此错误偶尔发生。有时我看到它,有时我没有。通常,如果我确实看到错误并简单地重新发布数据(例如刷新浏览器),一切正常(没有错误)。
我无论如何都不是 SSL 专家,所以我不知道如何最好地调试这个问题。我很确定我正确地调用了 unwrap 方法。第二条记录是否以某种方式损坏?密码是否已更改,我需要重新启动握手?遇到此错误时我该怎么办?
其他几点:
- 我正在使用 Sun/Oracle JDK 6 和与之捆绑的 Java 安全套接字扩展 (JSSE)。
- 在使用 Mobile Safari、iOS 6 时,我经常看到这个错误。我很少遇到 FireFox 的这个问题。
提前致谢!
java - 与客户端证书的 SSL 重新协商导致服务器缓冲区溢出
我编写了一个 Java 客户端应用程序,该应用程序使用客户端证书通过 HTTPS 连接到 Apache Web 服务器,并执行文件的 HTTP PUT 到服务器。它适用于小文件,但适用于大文件。
Apache 服务器日志显示以下内容:
客户端的响应是:
我不熟悉这个过程,所以我不确定这里是否需要重新谈判,或者我是否可以做些什么来阻止它。或者我可以让客户端等到重新协商完成后再发送应用程序数据?这是客户端代码的摘录(已删除错误处理):
我在想也许我需要使用像 SSLSocket 这样的较低级别的 API 并利用 HandshakeCompletedListener?
我还想知道 Apache SSLVerifyDepth 指令是否与重新协商发生的原因有关。我在每个目录上下文(只有一个上传目录)中获得了值为 2 的指令,Apache 手册对此进行了说明:
在每个目录上下文中,它在读取 HTTP 请求之后但在发送 HTTP 响应之前强制使用重新配置的客户端验证深度进行 SSL 重新协商。
这里要求的是 Java 调试输出:
这里要求的是 getMyCustomClientCertSocketFactory 源(从 PEM 文件中获取证书和密钥):
java - 将证书链写入 PEM 文件
我有一个证书链,其中可能包含单个证书或证书以及中间 CA 的证书。现在我想把它写成一个 PEM 格式的文件。是否可以在没有任何第三方库的情况下使用现有的 java 库来实现?下面是我的证书链代码,
现在我想将此证书写入 PEM 文件。请帮帮我。
java - SSL 服务器套接字需要身份验证选项
关于SSLServerSocket.setWantClientAuth:
如果设置为true
如果客户端选择不发送证书,则协商继续。
我还注意到,如果客户端发送证书但不是信任库的一部分,也会发生这种情况。在这种情况下,协商也不会失败。
那么这个设置的用例是什么?
java - JSSE/JCA/JCE 包是线程安全的吗?
我想知道 JSSE/JCE/JCA 包中的类(如 KeyManager、TrustManager、KeyStore 等)在 Java 中是线程安全的,还是需要使其成为线程安全的。
java - 使用 SSLSocketFactory 后连接 twitter
我正在尝试使用 Twitter4J 从 Twitter 流 API 中检索推文。该项目使用 SSLSocket 连接到远程服务器以检索一些数据,然后调用 Twitter4J。问题是,如果我建立这个连接 Twitter4J 会出现这个异常:
[2013 年 2 月 20 日星期三 11:32:02 CET]sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效认证路径
如果我不建立连接并清理下一行定义的密钥库,则不会发生这种情况:
连接代码是这样的:
我认为这个问题与 SSLSocketFactory 有关,因为我在不同的项目中测试了一些东西。例如,这段代码就像一个魅力:
但是这段代码不起作用:
我不能在我的实际项目中做同样的事情,因为休息......几乎所有东西^^
可能是什么问题呢?和解决方案?
java - JSSE wrap 创建两个 tls 数据包,需要两次展开。为什么?
我正在使用连接的 openssl 客户端检查我们的 java 应用程序在 jsse tls 加密和解密方面的行为。
首先,我观察到,当我为客户端数据调用 unwrap 时,它总是展开消耗 37 个字节并产生 0。下一次展开消耗一些字节并产生一些。
起初我以为客户端会先包装一个空数组。但后来我发现 jsse 代码的作用相同,只是它产生 1 个字节而不是 0。
因此,对 a 的每次调用都会wrap
消耗 X 字节并产生 Y 字节,但需要两个unwrap
,而第一个调用消耗 37 个字节并产生 1 个字节,第二个调用消耗 Y-37 个字节并产生 X-1 个字节。
虽然 openssl 和 jsse 做的几乎一样,但我希望这是正确的。但是我想知道,为什么会这样。我看不出有什么原因,它需要额外的资源......?