OpenSSL TLS / DTLS PSK

问题描述 投票:0回答:1

我正在开发一个应用程序,其中密钥服务器(K)生成对称密钥并与服务器(A)和客户端(B)共享。 A和B通过UDP连接。我正在使用Memory BIO,并试图使用Cipher“PSK-AES128-CBC-SHA”。

我有几个与此相关的问题:

  1. 当我们有对称密钥时,我们仍然应该调用SSL_do_handshake吗?
  2. 当我用这个调用SSL_CTX_set_cipher_list(context, "PSK-AES128-CBC-SHA");设置密码时,我得到一个错误SSL routines:ssl_cipher_list_to_bytes:no ciphers available

我尝试使用TLSV1_2_server_method,TLSV1_2_server_method,DTLS_server_method,DTLS_client_method但是每个方法都因上述错误而失败。

是否有可用于TLS-PSK加密的示例代码?我在网上找不到任何好的教程或例子。

在这样做时我指的是这篇文章,而是我正在使用Memory BIOs https://bitbucket.org/tiebingzhang/tls-psk-server-client-example/src/783092f802383421cfa1088b0e7b804b39d3cf7c/psk_server.c?at=default&fileviewer=file-view-default

ssl openssl tls1.2 tls-psk
1个回答
2
投票

我不能告诉你为什么密码不存在。我只能假设它不存在于你拥有的openssl版本中,或者它必须首先添加到openssl中。

您知道PSK支持是否已构建到tls1.3中?如果使用openssl 1.1.1,则可以从openssl命令行执行PSK。

服务器:

# use a 48 byte PSK
$ PSK=63ef2024b1de6417f856fab7005d38f6df70b6c5e97c220060e2ea122c4fdd054555827ab229457c366b2dd4817ff38b 
$ openssl s_server -psk $PSK -cipher TLS13-AES-256-GCM-SHA384 -nocert -accept 2020

客户:

$ openssl s_client -psk $PSK -connect localhost:2020 
CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 195 bytes and written 475 bytes
Verification: OK
---
Reused, TLSv1.3, Cipher is TLS13-AES-256-GCM-SHA384
…

因此,我建议您查找openssl 1.1.1 s_server和s_client命令的源代码,以查看如何在tls1.3中使用PSK的示例。

© www.soinside.com 2019 - 2024. All rights reserved.