编码/配置OpenSSL服务器以实现最大兼容性

时间:2011-10-12 12:32:06

标签: c ssl openssl legacy

我正在使用C + OpenSSL编写SSL服务器。这非常简单,并且有很多例子可以遵循。

但是,我需要与各种旧版客户端进行互操作,其中一些客户端真的旧,并且有各种各样的错误阻止SSL协商工作。到达这些客户的用户以进行升级是不切实际的。

SSL_CTX_set_options(ctx, SSL_OP_ALL);

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

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

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

1 个答案:

答案 0 :(得分:2)

我知道有很多事情会增加openSSL的互操作性。

  1. 使用“ALL”或“ALL:EXPORT:LOW”。我还没有检查过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
  5. 基本答案 - 编译自己的openSSL!