问题标签 [sslengine]
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 - SSLEngine 在第二个循环中握手库存
我正在尝试使用 SSLEngine 实现 SSL 握手,我需要以服务器和客户端两种方式进行,但是我被卡住了,我无法弄清楚为什么。
握手正确开始,交换了 Hello,交换了密钥,但随后我进入了 NEED_UNWRAP 状态。
这是我正在使用的握手代码:
这是我的 SSLEngine 创建类:
当我作为客户尝试握手时。正如您从日志中看到的那样,我从 NEED_WRAP 开始,将数据发送到服务器,状态到达 NEED_UNWRAP(这是正确的)服务器响应,我解析答案没有任何错误,但我没有前进到 NEED_WRAP,而是陷入了 NEED_UNWRAP。 ..
如果我尝试作为服务器进行握手,日志看起来像这样。正如您从日志中看到的那样,第一次读取很好,我响应了客户端,我从客户端获取了第二位数据,而不是拥有 NEED_WRAP 并且能够继续握手我被击中带有 NEED_UNWRAP 消息,但当然没有更多数据可以从客户端读取....
在发布之前,我确实在 StackOverflow 上查看了一些类似的问题,但它们主要是关于订单错误,我认为在这种情况下我是对的......我很确定我错过了明显的,但我只是似乎无法弄清楚...
java - 如何从 List<X509Certificate> 创建 SSLEngine
acme 为您提供整个证书链作为List<X509Certificate>
.
如何SSLEngine
从该证书链创建?
(理想情况下,我希望跳过整个密钥库或动态填充密钥库以在运行时读取)。
编辑:我有以下代码,但
- 不确定应该填写什么别名
- 不知道为什么我需要密码
- 不确定我是否应该使用变量 defaultType
- JKS 是否适合 509Cert
我想要“TLSv1.2”吗
/li>
netty - Spring WebClient 抛出 javax.net.ssl.SSLException: SSLEngine 在大量使用时已关闭
那是我的代码:
我同时从多个线程调用此函数。当我在一次运行中只调用它大约 20~30 次时,它工作得非常好。但是当我在大约 2 分钟内调用它 500~600 次(到同一个 URL)时,它会抛出
编辑
我试过只创建一个实例,WebClient
但它仍然抛出相同的异常
java - 如何测试基于 SSLEngine 的 TLS 实现?
我正在考虑通过非 TCP连接实现 TLS 的可能性。这个想法是使用SSLEngine,它提供了加密/解密数据到内存缓冲区的可能性,并通过我们想要的可靠传输来发送它们。
我必须实现 SSL 协议定义的所有握手(客户端问候、服务器问候......等)。
如果我这样做,我将如何测试我的实现是否有效?是否有一些我可以运行的“官方 TLS 测试套件”?
感谢您的建议
java - NIO 客户端/服务器安全地验证凭据
我使用受 SSL 保护的 Java NIO 来连接客户端和服务器。要连接到服务器,系统会提示用户输入主机、端口、用户名和密码。到目前为止,我可以连接客户端和服务器(他们成功完成了 SSL 握手),理论上我可以开始来回发送数据。我还没有编写验证登录凭据(用户名、密码)的机制。
服务器可以通过在数据库中查找用户名和密码来验证它们。如果客户端发送的凭据不正确,连接将被关闭。
问题 1:何时应验证凭据?我认为这必须在 SSL 握手之后发生。
问题 2:如何在凭证被序列化并发送到服务器之前安全地打包凭证?我想我应该散列密码。我也应该散列用户名吗?
像这样简单的东西就足够了吗?
问题 3:每个会话都应该对凭据进行一次身份验证,对吗?我阅读了一些似乎表明应该为每个请求验证凭据的帖子。
问题 4:我应该使用哪种哈希算法?SHA-512 似乎很受欢迎。
java - 升级到 TLSv1.3 时 SSLEngine 使用的变化
Java 11 发布时TLSv1.3
支持,默认使用。
它在 HTTPS 和 SSL 套接字的上下文中工作正常,但似乎在使用时SSLEngine
由于行为的变化而存在额外的障碍TLSv1.3
。
因此,通过NIO
using进行通信的强大实现在启用SSLEngine
时不再有效TLSv1.3
。没有明显的错误,以异常或 SSL 错误的形式,两个节点只会来回发送 wrap/unwrap 消息并最终超时。
我对使用 TLSv1.2 的 SSLEngine 和使用 TLSv1.3 的 SSLEngine 之间的行为变化的确切列表感兴趣,如果可能的话,还有这些之间的迁移清单。不幸的是,Java 11 的 SSLEngine javadocs 没有此信息 - Java 11 中没有新方法,也没有引用 TLSv1.3。
java - bad_certificate 但仅在使用 chrome 和 RSA(不是 DES)时
最近,我认为在升级等之后开始收到“javax.net.ssl.SSLHandshakeException:收到致命警报:bad_certificate”,现在我想使用 TLSv1.3。Safari、Opera 和 Firefox 似乎工作正常,但 Chrome 导致服务器异常
有谁知道这是为什么?这对我来说没有意义。
万一你好奇的情况下重现的步骤
- git 克隆https://github.com/deanhiller/webpiecesexample-all.git
- cd webpiecesexample-all
- git checkout -t origin/testChromeSsl
- ./gradlew assembleDist
- cd webpiecesexample/output/distributions
- 解压 webpiecesexample.zip
- 运行 ./bin/webpiecesexample
- 检查日志/server.log
- Safari 工作,chrome 导致服务器吐出 bad_certificate
好的,我刚刚将构建升级到 gradle 5.3.1,然后是 jdk11。要升级到 jdk11,我必须将用于测试的自签名证书升级到 RSA 而不是 DES,因为 TLSv1.3 不再支持 DES。我似乎收到了这个新错误
这篇文章中的所有内容似乎都不起作用
java - java SSLEngine 说 NEED_WRAP,调用 .wrap() 仍然是 NEED_WRAP
我看到 SSLEngine 有一个奇怪的问题,想知道我的代码或 SSLEngine 是否有问题。这是我看到事物的顺序
- HandshakeStatus 是 NEED_WRAP
- 我们调用 SSLEngine.WRAP
- 之后,有零数据写入缓冲区,并且 SSLEngineResult.result=OK(not overflow or underflow :( ) 并且 HandshakeStatus 是 STILL NEED_WRAP
最重要的问题:如何彻底调试?如何以某种方式“看到”每条消息?我可以很容易地捕获字节流,但是是否有一些库可以将其解析为 SSL 握手对象?
第 298 行(记录之前的握手状态)到第 328 行(我们用信息抛出异常)是这里的相关代码
堆栈跟踪是
有任何想法吗?我怎样才能真正深入研究呢?我的偏好是一个库,它获取字节并吐出代表每个握手消息或解密数据包的 ssl 对象(带有原始加密事物附带的任何标头信息)。
具体来说,这里是上面提到的代码
谢谢,院长
android - Android NIO - 无法从 SocketChannel 读取大数据,错误:BUFFER_UNDERFLOW
我们正在尝试通过 NIO TCPs SocketChannel 读取大量数据。
代码适用于少量数据(小于 16 KB),但高于第一次,它将 16 KB 读入目标缓冲区,再次尝试读取剩余数据,但给出BUFFER_UNDERFLOW
异常。
基于文档
客户端正在从网络中读取部分数据,我们需要强制客户端再次读取。但是,
它没有发生在我们的代码中。我们正在使用以下代码:
上面的代码参考取自这里:
调试代码后,我们得到以下异常
我们使用Conscrypt库来建立与 TCps 服务器的基于 PSK(预共享密钥)的通信,因此使用从 Conscrypt 提供的 pskKeyManagers 初始化的 sslContext。在具有大数据负载的 api 请求期间,我们收到上述错误。
此外,如果我们能获得任何使用 Conscrypt 进行 TLS 读/写通信的示例代码,那将会很有帮助。
在过去的 10 天里,我们一直在头疼。如果有人可以提供帮助,将不胜感激。
aws-api-gateway - 我可以通过 ACM 私有证书使用 VPC 链接到 NLB 吗?
我有一个 AWS API GW,我正在尝试连接到不同 VPC 中的 HTTPS REST 端点。根据 AWS 支持和我准备好的文档,解决方案是使用指向 GWs VPC 中的 NLB 的 VPC 链接与另一个 VPC 中的 IP 目标。我的 NLB 是 HTTPS,因为后端服务是 HTTPS。对于 NLB SSL 证书,我使用 ACM 生成私有证书(基于 ACM 私有 CA)。当我测试 GW 时,我得到了可怕的General SSLEngine 问题错误。NLB 工作正常,我可以从浏览器中点击它并从后端服务获取数据。VPC 链接是否不信任私有证书?我看不到任何添加 CA 的方法。这整个安排对我来说似乎很复杂。有什么建议么?