gpt4 book ai didi

c++ - Poco SSLManager 和 SecureStreamSocket 可以支持 SSL/TLS PSK(预共享 key 密码套件)吗?

转载 作者:太空宇宙 更新时间:2023-11-04 13:02:09 25 4
gpt4 key购买 nike

我想找到一些使用 PSK(预共享 key 密码套件)的 Poco SSL 连接的代码片段。但是我发现了一些总是使用证书(私钥/公钥)的例子。是否可以支持 PSK SSL/TLS?如果是,我该怎么做?或者有什么提示吗?

提前致谢。

添加了一些 CERT 代码片段以供引用。我可以用 CERT(和 privkey)做到这一点,但我不知道如何为 PSK 做到这一点。这是我的 CERT 代码片段。

=======================CERT代码===================== ============

try
{
initializeSSL();
SharedPtr<InvalidCertificateHandler> ptrHandler = new AcceptCertificateHandler(false);
Context::Ptr ptrContext = new Context(Context::CLIENT_USE, "certs/client01.key", "certs/client01.crt", "", Context::VERIFY_RELAXED, 9, true, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
SSLManager::instance().initializeClient(0, ptrHandler, ptrContext);

SocketAddress sa(host, port);
SecureStreamSocket socket(sa);

socket.connect(sa);

std::string data("hello, world");
socket.sendBytes(data.data(), (int)data.size());

cout << "Message successfully sent" << endl;

uninitializeSSL();
}

我找不到任何可以设置或传递 psk_server_cb/psk_client_cb 函数指针的 API。

最佳答案

Is it possible to support PSK SSL/TLS? if yes, how can I do this? or is there any hint?

是的,它可能与 SSL/TLS 相关。

这是在 OpenSSL 中使用预共享 key 的方法。您可以在 TLS Client 中使用此技术。 :

const char* const PREFERRED_CIPHERS = "PSK";
res = SSL_set_cipher_list(ssl, PREFERRED_CIPHERS);
if(res != 1) handleFailure();

从字符串创建的密码列表是:

$ openssl ciphers 'PSK'
PSK-AES256-CBC-SHA:PSK-AES128-CBC-SHA:PSK-RC4-SHA:PSK-3DES-EDE-CBC-SHA

您可以使用以下方法消除弱/受伤的密码:

const char* const PREFERRED_CIPHERS = "PSK:!3DES:!RC4";
res = SSL_set_cipher_list(ssl, PREFERRED_CIPHERS);
if(res != 1) handleFailure();

结果是:

$ openssl ciphers 'PSK:!3DES:!RC4'
PSK-AES256-CBC-SHA:PSK-AES128-CBC-SHA

我不知道如何在 Poco 中做同样的事情。我似乎记得 Poco 中曾经有一个处理所有 SSL/TLS 的源文件。您应该能够毫不费力地将上述更改应用于 Poco 源。

关于c++ - Poco SSLManager 和 SecureStreamSocket 可以支持 SSL/TLS PSK(预共享 key 密码套件)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43716012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com