问题标签 [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 投票
1 回答
421 浏览

java - 没有记录层,我怎样才能只获得 TLS 握手?

我正在查看最近的 QUIC 传输协议(传输TLS)的 Internet 草案,并想知道如何在 Java(或其他 JVM 语言)中实现它,假设我不想同时重新实现 TLS 1.3。

TLS通常基于 TCP(或其他具有类似服务的协议),TLS 本身有两层:

图表改编自互联网草案,第 2.1 节

在 Java 中,我们可以使用 javax.net.ssl 中的类来实现这一点,或者使用SSLEngine仅用于没有 I/O 的 TLS(应用程序或框架需要插入网络,例如使用 NIO),或者SSLSocket(或 SSLServerSocket)通过通常的 InputStream/OutputStream 阻塞 I/O 用于 TCP 上的 TLS。

QUIC仅使用 TLS 1.3 的握手部分来协商会话密钥,同时使用其自己的数据包格式和加密(“数据包保护”)而不是 TLS 的记录层(整个事情基于 UDP,而不是 TCP):

图表改编自互联网草案,第 3 节

所以现在我的问题是:给定的 TLS 实现(从 Java 11 开始,我们包含 TLS 1.3)在一个盒子中只有 TLS,即一起记录 + 握手 + 警报,而不是仅握手版本。SSLEngine 似乎是最接近的,但它仍然只有两个方法wrapunwrap方法来创建/读取密文和读取/生成纯文本(尽管我可能只进行握手而不传输任何实际数据)。

有没有一种简单的方法可以剥离记录层?还是我可以使用不同的实现?

我还需要从中获取实际的密钥(或者更确切地说,主密钥)。

0 投票
1 回答
2467 浏览

openssl - 与 TLS1.2 客户端和 TLS1.3 服务器握手失败

在 openssl 升级到 1.1.1 版本后,我有一个场景,我的客户端(odbc)在 TLS1.2 上运行,而我的服务器(数据库)在 TLS 1.3 上运行,它在客户端出现以下错误而失败。

“SSL 握手失败原因 [错误:1407743E:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报不适当的回退]。”

在 TLS 1.3 文档中写道,默认情况下启用回退保护,当 TLS 1.2 客户端与 TLS 1.3 服务器通信时,服务器会发送特殊字节以进行回退保护。

以下是我的疑问。- 我必须在我的客户处处理这些特殊字节吗?- TLS 1.2 客户端是否需要任何其他处理来与 TLS 1.3 服务器通信?- 或者还有其他失败的原因吗?

0 投票
2 回答
12815 浏览

apache - 带有 openssl 1.1.1 的 Apache 2.4.37:无法执行握手后身份验证

我将 apache 更新到最新版本 2.4.37 并将 openssl 更新到 1.1.1,现在,当客户端进行身份验证时,我只在 Firefox 63 中收到此错误,但在 Chrome 中没有:

我使用wireshark 试图找出问题所在,我知道Firefox 使用TLS 1.3,而Chrome 使用TLS 1.2。事实上,如果我将 FF 中的 TLS 最大版本设置为 TLS 1.2,它就可以正常工作。

我想获得 TLS 1.3 兼容性,或者,如果还不可能,强制在我的 Apache 配置中,客户端始终使用 TLS 1.2,但我不明白:(

这是我的 apache vhost 配置文件:

有人能帮助我吗?

谢谢。


已编辑

我找到了解决方案。SSLProtocol 指令应该在 /etc/apache2/mods-enabled/ssl.conf 中。

0 投票
1 回答
1103 浏览

nginx - Nginx 1.15.6 和 openssl 1.1.1 ,EarlyData 未发送

我们设置了“ssl_early_data on;”和“proxy_set_header Early-Data $ssl_early_data;” 在使用 openssl 1.1.1 构建的 nginx 1.15.6 配置中,但是当我们运行以下命令时,它显示 EarlyData 未发送。知道如何解决这个问题吗?

openssl s_client -connect www.rupeevest.com:443

SSL 握手已读取 4693 字节并写入 399 字节

验证:好的

新,TLSv1.3,密码为 TLS_AES_256_GCM_SHA384 服务器公钥为 2048 位 不支持安全重新协商 压缩:无 扩展:无 未协商 ALPN 未发送早期数据

验证返回码:0(ok)


0 投票
2 回答
4386 浏览

netty - 如何在 netty 中启用 TLSv1.3?

由于满足https://netty.io/news/2018/10/30/4-1-31-Final.html中提到的所有要求:

也就是说,默认情况下不启用 TLSv1.3,所以如果你想使用它,你需要在配置 SslContextBuilder 时使用 TLSv1.3 显式启用它(例如): SslContextBuilder.forClient().protocols("TLSv1. 3") ....

但我遇到如下异常:

有什么想法吗?

0 投票
2 回答
1015 浏览

nginx - 带有 TLS 1.3 的 Nginx

尝试在 Nginx (1.15.8) 中使用 TLS 1.3 证书,我发现官方的 Nginx 是使用 openssl 1.1.0 构建的,而对于 TLS 1.3,则需要 openssl 1.1.1。

为了解决这个问题,我从源代码构建了自己的 openssl 1.1.1,然后从源代码构建了 nginx(使用我刚刚构建的 openssl)。它完美地工作。但是 - 我无法找到任何内置此支持的官方 Nginx 发行版。在 Debian 或任何其他 Linux 中。

有没有人试过这个并找到一个官方的、预先构建的解决方案?

编辑:我在https://github.com/eldada/nginx-tls13-docker中的基于 Docker 的解决方案。

0 投票
2 回答
107 浏览

node.js - 免费 Heroku 计划和 TLS 证书

我知道如果我升级到爱好计划(每月 7 美元),我可以自动获得它。

但是有没有办法在 Heroku 免费计划上设置 TLS 证书以及如何设置?

我正在使用节点 js

0 投票
2 回答
1821 浏览

java - 升级到 TLSv1.3 时 SSLEngine 使用的变化

Java 11 发布时TLSv1.3支持,默认使用。

它在 HTTPS 和 SSL 套接字的上下文中工作正常,但似乎在使用时SSLEngine由于行为的变化而存在额外的障碍TLSv1.3

因此,通过NIOusing进行通信的强大实现在启用SSLEngine时不再有效TLSv1.3。没有明显的错误,以异常或 SSL 错误的形式,两个节点只会来回发送 wrap/unwrap 消息并最终超时。

我对使用 TLSv1.2 的 SSLEngine 和使用 TLSv1.3 的 SSLEngine 之间的行为变化的确切列表感兴趣,如果可能的话,还有这些之间的迁移清单。不幸的是,Java 11 的 SSLEngine javadocs 没有此信息 - Java 11 中没有新方法,也没有引用 TLSv1.3。

0 投票
1 回答
1611 浏览

mailkit - Mailkit SMTP TLS 1.3 版

Mailkit SMTP 是否支持 TLS 1.3?

这是一个简短而甜蜜的问题,但在我搜索答案时,我找不到明确的答案。此外,我找不到一个简单的测试电子邮件服务器或服务,我可以在其中锁定协议,以便仅支持 TLS1.3,以便我可以进行简单的测试。我不得不添加这一段,因为 SO 认为我的单行问题质量不够。

0 投票
1 回答
13776 浏览

c - curl:RSA_padding_check_PKCS1_type_1:无效填充

我正在通过代码(使用 OpenSSL API)为我的服务器应用程序生成 X509 证书。我刚刚通过在我的代码的支持列表中添加 TLSv1.3 密码来添加对 TLSv1.3 的支持。

证书生成和将 RSA pub + 私钥分配给证书没有变化。

我已在客户端升级 curl 和 OpenSSL 库以启用 TLSv1.3 连接。升级的 Curl 版本:7.63.0 & OpenSSL 版本:1.1.1

我看到以下错误:

即使 TLSv1.2(使用相同的升级客户端)也会出现同样的错误。

我在这里想念什么?请帮忙。