问题标签 [beast]
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.
sql-server-2005 - 为与 MS SQL Server 2005 的 JDBC 连接启用 AES_128_CBC 和 RC4_128
为了确保我的应用程序的向后兼容性,当使用易受CVE-2011-3389影响的MS SQL Server版本(任何 2005 或 2008/2008R2 不适合服务包)时,我正在测试 JDBC over TLS 行为。理论上,有两种选择:
- 通过禁用 CBC 保护
-Djsse.enableCBCProtection=false
并继续使用分组密码,例如AES_128_CBC
或3DES_EDE_CBC
, - 或回退到流密码,例如
RC4
(是的,我知道这也是不安全的,因为CVE-2015-2808)。
在实践中,虽然我在关闭 CBC 保护的情况下建立连接没有问题3DES_EDE_CBC
,但我仍然无法使用RC4_128
比1.8.0_51更新的 JDK (恰好地址CVE-2015-2808)或AES_{128,256}_CBC
(使用任何1.6+ JDK )。
以下是按 Java 版本细分的结果:
- 1.6.0_45 ( jTDS )
SSL_RSA_WITH_RC4_128_MD5
用来
- 1.7.0_76 ( jTDS ) 和任何 1.8.0 到1.8.0_45 ( MS SQL JDBC ):
SSL_RSA_WITH_RC4_128_MD5
(默认)或SSL_RSA_WITH_3DES_EDE_CBC_SHA
可以使用AES_128_CBC
即使3DES
被禁用也不会使用(3DES_EDE_CBC
无论如何都会被强制)
- 1.8.0_45 (IBM J9 8.0 SR1) ( MS SQL JDBC )
SSL_RSA_WITH_3DES_EDE_CBC_SHA
被使用(仅当 CBC 保护关闭时成功),如果请求AES
或RC4
- 1.8.0_51+ (Oracle) ( MS SQL JDBC )
SSL_RSA_WITH_3DES_EDE_CBC_SHA
已使用(仅在 CBC 保护关闭时成功),- 不会使用
AES_128_CBC
或者AES_256_CBC
即使被请求(与以前的 Java 版本不同,3DES
不再强制,而是我得到一个IOException
afterClientHello
,它确实列出*_WITH_AES_128_CBC_SHA
了兼容的密码套件) RC4
即使同时禁用AES
和禁用也不会使用3DES
:"no negotiable cipher suite"
(jTDS和MS SQL JDBC)。
这是java.security
我用来请求的AES
:
这是要请求的版本RC4
:
问题:
- 显然,
AES_{128,256}_CBC
我的 Java 客户端支持,因为我可以TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
在连接到MS SQL Server 2014时使用。谁能确认MS SQL Server 2005不支持它?由于禁用有效导致,我认为它是受支持的,但是服务器端发生了一些事情,即使 CBC 保护已关闭。AES
"no negotiable cipher suite"
- 我怎样才能
RC4
在 Java 1.8.0_51+中使用?此解决方案不再有效,也没有任何影响https.cipherSuites
系统属性(在此处描述)。6u115和7u101中有一个神奇的jdk.tls.enableRC4CipherSuites
系统属性,但在 Java 1.8 中似乎没有效果。 - jTDS到底有什么问题?
"Connection reset by peer"
它适用于 Java 1.6 和 1.7(驱动程序版本 1.2.8 和 1.3.1),但使用 Java 1.8,只要MS SQL JDBC仅用于3DES
加密连接数据,我就会不断收到。
c++ - 尽管 -isystem 仍生成警告
在编译我们的一个应用程序时,我们使用了 Beast 和 Boost 这两个框架。在 Beast 使用的一些 Boost 代码中,g++ 会生成警告,因为它认为可能存在未初始化的变量。但是,我们使用“-isystem”标志包括 boost 和 beast。这应该会阻止显示警告,但事实并非如此。任何想法为什么?
您可以在下面看到编译命令及其输出,并进行了一些匿名化处理。
运行 Ubuntu 16.04。g++ 由供应商提供,其版本如下。
java - Oracle JDK8 中的 JSSE 是否实现了 TLS Fallback SCSV?
看起来 OpenJDK 版本 8 中的 JSSE 没有实现RFC7507。OpenJDK 错误跟踪器中存在一个未解决的缺陷: JDK-8061798
但是关于 Oracle JDK 的信息并不多。Oracle JDK 版本 8 是否实现 TLS 回退信令密码套件值 (SCSV)?如果确实如此,如何启用此功能?
c++ - 如何使用 Beast C++ 库从 HTTP 重定向到 HTTPS?
我正在研究 Boost.Beast 库。我尝试提出一个请求,其响应是:
然后,我尝试使用此位置字段发出请求,但收到错误的请求响应。
我该如何进行重定向?有例子吗?
这是我的代码:
谢谢
c++ - 试图理解 boost::beast 多缓冲区
Beast websocket 示例将数据存储在多缓冲区中:
该实现使用一个或多个不同大小的字符数组的序列。额外的字符数组对象被附加到序列中以适应字符序列大小的变化。
在查看界面时,我并不完全清楚它是如何工作的。如果我阅读描述,它可以被视为一个缓冲区数组。但似乎输出只是一块数据。这是否意味着“一个或多个数组”仅适用于内部结构?
在示例代码中,数据被读入缓冲区,如下所示:m_websocketStream.async_read(m_buffer.....
每个 async_read 操作是否创建一个新的内部缓冲区。
如果是这种情况,另一端如何解释。EG 如何将其读入 std::string 或 std::vector。
查看源数据时,data() 返回 const_buffer_type,这是一个前向声明。
对于数据成员,帮助信息提供了以下信息,但帮助不大:
用于将输入序列表示为缓冲区列表的类型。使用 const_buffers_type = implementation_defined;
该定义似乎来自包含的头文件 boost/asio/buffer.hpp。然而,整体结构对我来说有点令人困惑。
我只是想了解如何将数据作为字节处理或将其转换为 std::string。
尝试了以下方法,但这也是不允许的:
std::string( boost::asio::buffer_cast<const char*>(m_buffer.data())
,boost::asio::buffer_size(m_buffer.data()) );
任何人都可以启发我一点吗?
c++ - Boost.Beast 高级服务器示例中的 HTTP Pipelining vs. WebSocket
我对这个 Boost.Beast 示例有疑问:
在第 643 行,WebSocket 升级完成。但是,如果我理解正确的话,队列中可能仍然有异步执行的 HTTP 写入命令。因此,它们与当前的 WebSocket 通信并行执行。那合法吗?还是我还没有完全理解这个例子?
c++ - 从 Beast.1.0.0-b66 到 Boost.1.67.0.Beast 的端口性能下降
我观察到从 Beast.1.0.0-b66(使用 Boost.1.64.0)迁移到 Boost.1.67.0.Beast(即将 Beast 集成到 Boost)时性能急剧下降(CPU 消耗急剧增加) . 毫无疑问我做错了什么,但我无法想象是什么。
什么是:
就是现在:
什么是:
就是现在:
当然,我还必须进行大量 API 更改。例如:
就是现在:
该应用程序工作正常——包括 SSL 握手和代理协商——但我必须解决 CPU 消耗的峰值和相应的性能下降。我想知道是否有人知道我忽略的一些明显的事情。
编辑:我应该提到我正在为 SSL 流使用 flat_buffer。
我有机会分析“端口前”和“端口后”的性能数据。这是“端口前”(即良好的性能)调用链:
这是“端口后”(即性能不佳)调用链:
c++ - Boost Beast WebSockets 每次读取都有几个不确定的写入
在 C++ 中使用 boost/beast websockets
我已经阅读了野兽 websockets 不支持非阻塞读取的问题,以及无法检查数据是否可用以及在单独的线程中进行读取和写入可能不是线程安全的事实。
那么,我遇到的问题是找出解决这个问题的正确方法:
IBM Watson 语音到文本 WebSockets API 允许您在音频数据块可用时发送它们(或从现有文件中分块发送)。但是,您不会获得每个块的文本回复。
相反,您会一直向它发送音频数据,直到它识别出暂停或话语结束,然后它最终会发回一些结果。
换句话说,您可能必须在读取返回任何内容之前执行多次写入,并且无法预测您将必须执行多少次写入。
如果没有非阻塞读取功能,并且没有将阻塞读取放在单独的线程中,我如何继续发送数据,然后仅在可用时检索结果?
c++ - Boost Beast编译错误
d:\boost\boost\beast\core\detail\ostream.hpp(263): error C2955: 'boost::beast::detail::ostream_helper': 使用类模板需要模板参数列表
编译示例项目时:http_server_small.cpp(来自“beast”)
提升\野兽\核心\细节\ostream.hpp:
Boost 版本 1.67.00,在 Visual Studio v171 (2017)、x64 下编译
它看起来像是 boost/beast lib 中的错误,但在 lib 的发布版本中看到编译错误很奇怪。(我不是lib的作者,我只是想使用它)。
也许我缺少一些编译选项或标志?有没有人弄清楚问题是什么以及如何解决?