问题标签 [tls1.3]

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 投票
2 回答
257 浏览

atmel - WolfSSL 和 ATECC508A 的配置问题

我们正在使用来ATECC508A支持(对不起 - 客户规格)。我们正在尝试在物联网设备上做。软件模式使用- 工作正常。 硬件支持模式 - 失败并出现错误 -248 ( in )。将调试器中的程序跟踪到握手的 Pre-Master Secret 步骤,在那里它无法从芯片的插槽中读取。我们将 MicroChip 的默认配置配置用于. 看起来 Pre-Master Secret 是在内部使用私钥计算的,并通过从slot3 的加密读取返回。但是,默认配置将插槽 3 设置为“从不读取”模式。因此,它出错也就不足为奇了。WolfSSLRenesas RX600 CPUTLS 1.3ECCWolfSSLATECC0xF4cryptoauthlibTLS 1.3ATECCATECC508AATECCATECC

但是,这是使用ATECC508A插槽的默认配置、cryptoauthib库中的默认设置以及未更改的代码WolfSSL(添加的调试除外)。我在这里错过了什么吗?

版本:WOlfSSL 4.0.0、CryptoAuthLib 20190304 瑞萨 RTOS RI600v4

关于其他要查看的内容有什么建议吗?我可以提供user_settings.h您可能想要的所有日志等。提前感谢您的任何想法。

0 投票
2 回答
2031 浏览

java - 如何在 HiveMQ 中正确使用 TLS 1.3 密码套件?(获取 SSL 异常:在接收对等方的 close_notify 之前关闭入站)

我想使用 TLS 1.3 与 HiveMQ 进行安全通信。我已将 HiveMQ 社区版服务器config.xml文件配置为指定使用 TLS 1.3 密码套件,并使用曲线将其指向包含 256 位椭圆曲线密钥(EC NOT DSA)的密钥对的密钥库:(secp256r1这是一个TLS 1.3 支持的少数曲线)。256 位密钥对适用于我要使用的 TLS 1.3 密码套件:TLS_AES_128_GCM_SHA256. 我还生成了一个 384 位椭圆曲线密钥,TLS_AES_256_GCM_SHA384但我只关注TLS_AES_128_GCM_SHA256如果我让 AES 128 工作,AES 256 套件将工作。我已经为这两个密钥对生成了证书,并将它们都cacerts放在JAVA HOME Folder. 我仍然收到 javax.net.ssl.SSLHandshakeException:

javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify

我试过使用这个 TLS 1.2 密码套件:(TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256使用适当的证书)并且它没有任何问题,所以这个问题似乎是 TLS 1.3 的。我的项目在Java 12.0.1. 我注意到虽然 HiveMQ 服务器识别了 TLSv1.3,但它启用了 TLSv1.2 协议,但没有说它启用了任何 TLSv1.3 密码套件。我是否需要以某种方式在 HiveMQ 中手动启用 TLSv1.3 密码套件,因为即使在指定特定协议时它们看起来也没有打开?我在下面留下了服务器控制台输出的副本以及 Java 代码和异常。


更新:我已经指定客户端使用 TLS1.3.protocols()sslConfig. 我尝试手动将密码套件:添加TLS_AES_128_GCM_SHA256到 config.xml 文件,但这次我收到 SSL 异常错误。更新的输出和异常如下。我怀疑 HiveMQ 正在过滤掉我正在尝试使用的密码套件。我尝试创建一个 SSL 引擎作为测试并使用它.getEnabledCipherSuites()getSupportedCipherSuites()它说我的 JVM 以及 TLS1.3 协议本身支持上面的 TLS 1.3 密码套件。

HiveMQ 服务器控制台输出(来自run.sh启用了 DEBUG 的文件logback.xml):

Java 代码:

异常(使用 Ssl 调试工具:-Djavax.net.debug=ssl):

0 投票
1 回答
1173 浏览

ssl - 只有 TLS_AES_128_GCM_SHA256 密码适用于 TLS 1.3 的 psk 连接吗?

我有一台在Ubuntu 1804上运行的服务器,带有OpenSSL 1.1.1 11 Sep 2018客户端使用以PSK-AES256-CBC-SHA作为密码的 PSK 身份验证与服务器通信。

当我使用在 Windows 上构建的带有openssl-1.1.1c(使用 Microsoft Visual Studio 2019 构建)的客户端时,我无法使其工作。

在服务器端,我得到以下信息:

而在客户端,

我在openssl-1.1.1c\ssl\statem\extensions_clnt.c中看到了以下内容。

那么这是否意味着只有TLS_AES_128_GCM_SHA256可以与 TLS1.3 一起使用?任何指向我可能会丢失的东西?任何有关如何从 Windows 平台使用客户端 PSK 身份验证的教程都会有所帮助。

我可以使用相同的 PSK id 和密钥从 linux 机器连接到服务器。但无法从 Windows 框连接。

0 投票
1 回答
23806 浏览

java - Java 11 和 12 SSL 套接字在启用 TLSv1.3 的情况下因握手失败错误而失败

在使用 Java 12 开发基于 SSL(非 HTTP)的服务器时,我遇到了让服务器和客户端一起交谈的意外困难。连接总是因 handshake_failure 错误而中断。经过大量努力(最初我是在证明我的证书有罪),我能够隔离问题,这要归功于套接字级别的 HelloWorld SSL 客户端/服务器对:握手失败是由启用的协议中存在 TLSv1.3 引起的默认情况下在 JDK 中。

到目前为止,我避免握手错误的解决方案是完全禁用 TLSv1.3(服务器端),但我对这个解决方案并不满意。我想了解发生了什么(假设它不是 JDK 或系统中的错误,而是我的应用程序或环境中的错误)。

我在下面提供了一些代码。谁能检查并告诉我我做错了什么?谢谢和最好的问候。

这是我的配置:OSX 10.14 (Mojave) 我已经使用以下 Java 版本进行了测试:

编辑:我在测试中添加了 Java 11,这个版本也出现了问题

  • Java 8 (oracle64-1.8.0.181):没有握手失败
  • Java 10 (oracle64-10.0.2 2018-07-17):没有握手失败
  • Java 11(openjdk 版本“11.0.4”2019-07-16):握手失败
  • Java 12 (oracle64-12.0.1 2019-04-16):握手失败
  • Java 12(openjdk 12.0.2 2019-07-16):握手失败

(在服务器的密钥库和客户端的信任库中也需要服务器的证书来测试任何 SSL 应用程序)

这是结果(发生错误时):

正如@SvetlinZarev 和@user207421 所建议的,这里有一些启用了-Djavax.net.debug=ssl:handshake 的输出片段。由于代码在强制使用 TLSv1.2 协议时有效,因此更有趣的是看看当一个人简单地使用默认值时发生了什么(对 ssl.setEnabledProtocols 的调用已注释掉):

注意:该项目是个人的和实验性的,服务器的证书是假的,自签名的,并添加到客户端的信任库(密钥库和信任库也是虚拟的),无论如何都会公开,所以我不害怕发布任何敏感的信息

从客户端:

这是服务器端:

0 投票
1 回答
839 浏览

java-8 - 如何在支持 TLS 1.3 的情况下使用 Azul 的 JSSE

https://github.com/openjsse/openjsse

“创建 OpenJSSE 项目是为了向现有 Java 8 应用程序添加对 TLS 1.3 的支持,而无需更改代码”

究竟如何使用这个项目?

我目前正在使用适用于 Java 8 的 AdoptOpenJDK 构建。

0 投票
0 回答
1895 浏览

node.js - 如何在 nodejs 10.x 中使用 TLSv1.3

我试图使用 https 进行外部 api 调用并收到以下错误。

错误:在 TLSSocket.emit (events.js:203:15) 的 Object.onceWrapper (events.js:286:20) 的 TLSSocket.onConnectEnd (_tls_wrap.js:1092:19) 建立安全 TLS 连接之前,客户端网络套接字已断开连接) 在 endReadableNT (_stream_readable.js:1129:12) 在 process._tickCallback (internal/process/next_tick.js:63:19) 代码:'ECONNRESET',

经过进一步调查,我知道我的 api 端点使用 TLSv1.3,由于我使用的是 nodejs 10.x,我需要设置 tls.DEFAULT_MAX_VERSION = 'TLSv1.3';

之后它抛出以下错误

TypeError [ERR_TLS_INVALID_PROTOCOL_VERSION]:“TLSv1.3”不是 Object.createSecureContext (_tls_common.js: 100:13) 在 Object.connect (_tls_wrap.js:1127:48) 在 Agent.createConnection (https.js:120:22) 在 Agent.createSocket (_http_agent.js:227:26) 在 Agent.addRequest (_http_agent. js:185:10) 在新 ClientRequest (_http_client.js:249:16) 在 Object.get (https.js:293:15) 请求 (https.js:289:10)

0 投票
1 回答
15304 浏览

c# - .NET Core 3 是否支持 TLS 1.3

我正在使用 .NET Core 3.0 制作仅支持 TLS 1.3 的代理,我看到 SslProtocols 中定义了 Tls13 = 12288。但是在我的测试过程中,它只抛出异常“客户端和服务器无法通信,因为它们不具备通用算法”。所以我的问题是 .NET Core 3.0 现在是否支持 TLS 1.3?

我用的是Visual Studio Professional 2019 16.3.0 预览版3.0,我的项目是netcore3.0

0 投票
1 回答
89 浏览

tls1.2 - 今天在生产中推荐使用 TLSv1.3

安全指南(PCI-DSS、NIST、www.ncsc.gov.uk、法语 ANSSI ..)声明应该只允许 TLSv1.2,并且应该停用 TLSv1.0 TLSv1.1。

没有对 TLSv1.3 给出任何明确建议的安全指南。

我的理解是,TLSv1.3 因此不应该在生产系统中激活,除非它被管理业务活动区域的安全指南明确推荐。

这个对吗 ?

0 投票
1 回答
1256 浏览

python - ssl.SSLError: ('No cipher can be selected') 尝试在 Python SSL 中设置 TLS1.3 密码套件时

尝试在 python 中为 ssl 上下文设置 TLS1.3 密码时遇到问题,尤其是“TLS_AES_128_CCM_SHA256”。

操作系统:Windows 7

Python版本:3.7.4

OpenSSL 版本:1.1.1c

默认情况下,当我不设置密码套件时,可以在 TLS 握手中看到客户端确实提供了一些 TLS1.3 密码,但不是我需要的。

我收到的错误:

ssl.SSLError:('没有密码可以选择。',)

0 投票
1 回答
214 浏览

mqtt - 在构建时启用了 TLS v1.3 的 mosquitto_pub 上的运行时错误

我正在开发一个需要 TLS v1.3 和 MQTT v5.0 的应用程序,作为我工作的一部分,我必须在不同物理主机的 Debian 系统上构建 mosquitto MQTT 代理和订阅者。

从 mosquitto Github 存储库中,我设法构建了 mosquitto 库(v1.6.7)和二进制工具(它README.md描述了默认情况下在构建时启用 TLS):

我还设置了 CA 证书/服务器证书(用于 MQTT 代理),并进行了修改mosquitto.conf从这里学习)。当我尝试向我的 MQTT 代理发布消息时,出现以下错误:

在 MQTT 代理上,它只是在 TCP 级别建立一个新连接,然后立即关闭,我还使用 Wireshark 在代理和客户端之间捕获了一些数据包,但是从那里没有 TLS v1.3 数据包。

我该如何处理这个问题?