【问题标题】:can Poco SSLManager and SecureStreamSocket support SSL/TLS PSK (Pre-Shared Key Ciphersuites)?Poco SSLManager 和 SecureStreamSocket 可以支持 SSL/TLS PSK(预共享密钥密码套件)吗?
【发布时间】:2017-09-28 16:27:49
【问题描述】:

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

提前致谢。

添加了一些 CERT 代码 sn-p 以供参考。 我可以用 CERT(和 privkey)来做到这一点,但是我不知道如何为 PSK 做到这一点。 这是我的 CERT 代码 sn-p。

========================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。

【问题讨论】:

    标签: c++ ssl openssl poco


    【解决方案1】:

    是否可以支持 PSK SSL/TLS?如果是,我该怎么做?或者有什么提示吗?

    是的,可以使用 SSL/TLS。

    这是在 OpenSSL 中使用预共享密钥的方法。你可以在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 源。

    【讨论】:

    • 你好,jww 我确实让它与 CERT(和 privkey)一起工作。我只是不知道如何使用 PSK 来做到这一点。查看我添加的 cmets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    • 2013-09-02
    相关资源
    最近更新 更多