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

C 编码/配置OpenSSL服务器以实现最大兼容性,c,ssl,openssl,legacy,C,Ssl,Openssl,Legacy,我正在用C+OpenSSL编写一个SSL服务器。这很简单,下面有很多例子 但是,我需要与范围广泛的遗留客户机进行互操作,其中一些客户机非常旧,并且存在各种各样的bug,这些bug会阻止SSL协商工作。让这些客户机的用户升级充其量是不切实际的 SSL_CTX_set_options(ctx, SSL_OP_ALL); 。。。帮助,但仍有一些客户端无法建立SSL连接 我还可以采取哪些其他措施使OpenSSL尽可能互操作 (一个有问题的客户端是Windows上的Kermit95——我相信,它是在20

我正在用C+OpenSSL编写一个SSL服务器。这很简单,下面有很多例子

但是,我需要与范围广泛的遗留客户机进行互操作,其中一些客户机非常旧,并且存在各种各样的bug,这些bug会阻止SSL协商工作。让这些客户机的用户升级充其量是不切实际的

SSL_CTX_set_options(ctx, SSL_OP_ALL);
。。。帮助,但仍有一些客户端无法建立SSL连接

我还可以采取哪些其他措施使OpenSSL尽可能互操作


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

我知道有很多事情可以提高openSSL的互操作性

  • 使用“全部”或“全部:导出:低”。我还没检查过“所有”是否真的意味着“所有”
  • 有一个编译时选项可以在openSSL中重新启用EXPORT56密码。您必须在ssl/TLS1.h中将TLS1\u ALLOW\u experional\u CIPHERSUITES设置为1。默认情况下,它们是禁用的
  • 一些二进制发行版,包括RedHat's,遗漏了任何有专利问题的密码
  • 实验密码可能需要512位RSA密钥。请参见此处的示例代码:

  • 基本答案-编译您自己的openSSL

    。。。添加一些日志以转储SSL_CTX的ciphersuite列表非常有用。