是否有公共 psk 服务器来测试 tls 握手?

Posted

技术标签:

【中文标题】是否有公共 psk 服务器来测试 tls 握手?【英文标题】:Is there a public psk server to test tls handshake? 【发布时间】:2016-11-20 15:12:41 【问题描述】:

我想要的是在 psk 处于活动状态时测试 tls 握手。 我还想查看在客户端(我的笔记本电脑)和公共服务器之间的连接期间交换的每个 http 标头。 现在我想知道是否有一个公共 psk tls 服务器可以让我进行测试。

问候。

【问题讨论】:

试试我未完成的小项目TlsPskServer2。 【参考方案1】:

我怀疑互联网上是否有使用 PSK 的 Web 服务器开放供公众测试。我也怀疑浏览器是否支持 PSK 密码套件。但是您可以使用带有 openssl 的 PSK 设置您自己的 Web 服务器:

openssl s_server -psk 1a2b3c4d -nocert -www

以及匹配的客户端:

openssl s_client -connect 127.0.0.1:4433 -psk 1a2b3c4d

关于 HTTP 协议:它独立于 TLS 层,即如果使用 PSK 或使用证书的普通身份验证,它不会改变。

【讨论】:

【参考方案2】:

即使某些公共 TLS 服务器支持 PSK,您也无法使用它来测试您的客户端。公钥身份验证(大多数 TLS 服务器使用)的工作方式与 PSK 之间存在根本区别。

公钥认证: 在公钥服务器身份验证(不涉及客户端身份验证)的情况下,服务器发送一个证书,其中包含一个公钥,客户端加密它的预主密钥并将其发送到只有服务器才能解密的服务器。这样,两者都具有相同的 pre-master secret,并且可以使用相同的推导集来进一步推导最终密钥。

预共享密钥: 顾名思义,预共享要求双方在彼此之间预共享相同的密钥。他们只是在他们之间交换 ID,以指示他们将使用哪个 Pre-Shared 来生成最终密钥。

因此,即使有支持 PSK 的服务器,您也应该拥有与其拥有的相同(或至少一个)密钥集,这是不可能的,因为这些服务器不会与任何人共享其密钥,除了它应该与谁(合法客户)共享。

所以,对你来说最好的方法是使用 openssl 的测试客户端和服务器工具并进行测试。

【讨论】:

以上是关于是否有公共 psk 服务器来测试 tls 握手?的主要内容,如果未能解决你的问题,请参考以下文章

TLS1.3 握手协议的分析

SSL/TLS 链接的建立/握手

是否可以在 Tomcat 中进行 TLS 握手事件?

OpenSSL TLS/DTLS PSK

在TLS / SSL握手(证书等)中泄露了哪些信息? [关闭]

TLS协议的TLS握手协议