问题标签 [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.

0 投票
1 回答
4103 浏览

websocket - 如何使用 netty 保护 websocket

我想将 netty 用于启用了 TLS 并使用 (wss://) 模式的 websocket。

所以我想我应该像这样工作:WebSocketServerHandler现在应该扩展SslHandler所以我基本上只需要在WebSocketServerPipelineFactory中设置一个 SSLEngine 。我可以将引擎传递给安全处理程序:

这种方法通常是正确的方法吗?(如果方法正确) - 我如何设置 SSLEngine(我有我的证书和私钥/公钥作为可用文件)。我找不到任何例子!

谢谢。

0 投票
2 回答
3509 浏览

java - Java JSSE SSLEngine 无法恢复 SSL 会话

我正在编写一个使用 SSLEngine 和 NIO 的应用程序,我同时编写客户端和服务器。客户端能够连接到服务器,连接后我希望他能够执行会话恢复/重新协商,但目前没有运气..

由于使用 SSLEngine 的代码非常大(SSLEngine 的使用非常复杂!)我将编写一个简单的伪代码来演示这种情况:

** 我更愿意发布可以提供帮助的代码的任何部分(即使是完整的代码,尽管我说它很大..)

当我执行我的程序时,第一个连接成功,但第二个导致异常:

我是否错过了恢复 ssl 会话所需的一些成分?

0 投票
2 回答
2103 浏览

netty - 如何提高服务器 SSL 性能

我在代理服务器上启用了 SSL,发现性能已经从每秒 17k 请求下降到每秒 5k 请求。我遵循了 Netty 的安全聊天示例中的代码,我认为我没有做任何不同的事情。

我写了一个虚拟服务器,看看我是否在代理上犯了一些错误。在正常 http 模式下运行虚拟 SSL 服务器每秒可以处理大约 50k 请求。当我在虚拟服务器上启用 SSL 时,每秒请求数下降到 28k。

有什么我做错了吗?有什么我想念的吗?

我正在使用 JDK 6 编译代码,在 JDK 7u4 上运行。我也在使用 Netty-3.5.0。我正在使用 zeusbench 运行测试。测试参数为:zeusbench -n 10000 -c 100 -k -C RC4_SHA "https:///"

资料来源: http: //pastebin.com/iahqr3zT

编辑 1:我通过 JProfiler 运行了虚拟服务器。管道工厂中的 SSLContext.createSSLEngine 调用(平均)需要 55,005 微秒(该平均值是根据该方法的 540 次调用计算得出的)。

channelConnected 中的 SslHandler.handshake 调用(平均)需要 46,284 微秒(该平均值是根据该方法的 540 次调用计算得出的)。

我知道 Netty 对 createSSLEngine 的调用无能为力,但是 SslHandler.handshake 可以调整得更好吗?它所花费的时间几乎与发动机本身的生成时间一样长。

0 投票
1 回答
990 浏览

java - 如何使用 SSLEngine 在 x509 SSL/TLS 握手后验证服务器(对等)名称?

我正在使用SSLEnginewithNIO进行非阻塞 TLS 通信。

该引擎工作正常,并且能够验证 CA 信任、服务器证书的有效期。

但我缺少的是证书主题名称与我连接的服务器名称匹配的验证。

考虑到主题替代名称等所有 SSL 扩展,实现它的最佳方法是什么?

我尝试简单地检查主题名称,但即使使用 ,它也不起作用google.nl,证书中的主题是google.com,并且google.nl只能在替代名称扩展中找到。

0 投票
5 回答
9626 浏览

java - Java SSLEngine 示例

我在这里找到了一个如何实现 Java SSLEngine 的示例。不幸的是,服务器的源代码并不完整。你知道我在哪里可以找到教程中的完整源代码吗?

0 投票
1 回答
1322 浏览

java - Java NIO 和 SSL

我正在使用 java NIO 编写服务器,我有几个问题找不到答案。

一、关于SSLEngine,如何NEED_TASK在单独的线程中正确处理?当我在单独的线程中调用任务时,它们会完成,但我不知道如何返回执行另一个握手操作。一种选择是从执行委派任务的线程中调用该操作,但我想这不是这样做的方法。

interestOps()另一个问题是关于从不同的线程然后选择器线程调用。在尝试写入频道并没有写入所有数据后,我需要更改关键兴趣。我考虑过使用 ROX NIO 教程中的某种更改队列,但我在这里的另一个线程中读到这不是最好的方法。

0 投票
2 回答
5947 浏览

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 的这个问题。

提前致谢!

0 投票
1 回答
573 浏览

security - SSL 中如何使用信任库和密钥库?

使用 Java 创建 SSL 连接时,我们首先使用KeyStoresTrustStores初始化SSLContextjavax.net.ssl中的SSLContext有一个名为createSSLEngine()的方法来创建SSLEngine。因此,在为连接创建会话时,将使用创建的 SSLEngine。我的问题是在 SSL 协议的哪个点使用来自 KeyStores 和 TrustStores 的 keyManagers 和 TrustManagers?

提前致谢。

0 投票
1 回答
565 浏览

java - java中SSLEngine和SSLEngineResults中getHandShakeStatus()的区别

我正在尝试在 java 中创建与 SSLEngine 的客户端/服务器连接。我想问一下有什么区别SSLEngine.getHandshakeStatus()SSLEngineResults.getHandshakeStatus().我找到了 Nuno Santos 的关于SSLEngineNIO API 和多路复用的示例代码。

我参考的代码是:

我找到的代码链接是: http ://onjava.com/pub/a/onjava/2004/11/03/ssl-nio.html?page=last&x-order=date

示例代码在参考资料部分

提前致谢!

0 投票
1 回答
423 浏览

openssl - 使用自定义 openssl 引擎防止私钥暴露

是否可以让引擎生成密钥对,让应用程序“使用”私钥(例如签名)而不实际暴露密钥?例如,openssl 会返回某种引用,但不会返回密钥本身。此外,应该有一种方法来存储密钥对(以及任何相关的证书链)并在以后检索它们。我们正在考虑将所有内容存储在 pkcs12 结构中。

你能给我一些指示如何在 C 中做到这一点吗?