【问题标题】:Coding/configuring an OpenSSL server for maximum compatibility编码/配置 OpenSSL 服务器以获得最大的兼容性
【发布时间】:2011-10-12 12:32:05
【问题描述】:

我正在用 C + OpenSSL 编写 SSL 服务器。这很简单,并且有很多示例可供参考。

但是,我需要与广泛的旧客户端进行互操作,其中一些是非常旧的,并且有各种错误会阻止 SSL 协商工作。让这些客户端的用户让他们升级是不切实际的。

SSL_CTX_set_options(ctx, SSL_OP_ALL);

... 有帮助,但仍有客户端无法建立 SSL 连接。

我可以采取哪些其他措施来使 OpenSSL 尽可能具有互操作性?

(一个有问题的客户端示例是 Windows 上的 Kermit95——我相信它是在 2003 年编译的,安装目录中有一个 libssleay.dll。虽然 Kermit95 源现在是免费的,但即使是维护者也不知道如何构建它在 Windows 上!)

【问题讨论】:

    标签: c ssl openssl legacy


    【解决方案1】:

    据我所知,有很多事情可以提高 openSSL 的互操作性。

    1. 使用“ALL”或“ALL:EXPORT:LOW”。我没有检查 ALL 是否真的意味着 ALL。
    2. 有一个编译时选项可以在 openSSL 中重新启用 EXPORT56 密码。您必须在 ssl/tls1.h 中将 TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 设置为 1。默认情况下它们被禁用
    3. 包括 RedHat 在内的一些二进制发行版会遗漏任何存在专利问题的密码。
    4. 实验性密码可能需要 512 位 RSA 密钥。在此处查看示例代码:http://www.openssl.org/docs/ssl/SSL_CTX_set_tmp_rsa_callback.html

    基本答案 - 编译你自己的 openSSL!

    【讨论】:

    • ...添加一些日志记录以转储 SSL_CTX 的密码套件列表很有用。
    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 2013-01-17
    相关资源
    最近更新 更多