无法使用 OpenSSL 1.1.1 构建 activemq CMS 3.9.5

Posted

技术标签:

【中文标题】无法使用 OpenSSL 1.1.1 构建 activemq CMS 3.9.5【英文标题】:Failed to build activemq CMS 3.9.5 with OpenSSL 1.1.1 【发布时间】:2019-03-13 13:36:33 【问题描述】:

ActiveMQ CPP 库版本 3.9.5 状态的 Readme.txt

1.3 OpenSSL

如果您希望使用 SSL 传输,那么您需要拥有 OpenSSL 及其包含安装在您的系统上。我们建议 您使用 1.0.0 或更高版本以获得最佳性能和安全性,但是 从 0.9.8 开始的版本也可以工作。

我正在尝试使用 Visual Studio 项目(包含在 activemq-cpp 3.9.5 发行版中)使用 OpenSSL 1.1.1 构建 activemq cms 3.9.5,并且看起来 CRYPTO_malloc_init() 已从 OpenSSL 1.1.1 中删除,这样我在 OpenSSLContextSpi.cpp 中遇到编译错误

#ifdef HAVE_OPENSSL
    // General library initialization.
#ifdef WIN32
    CRYPTO_malloc_init();
#endif
    SSL_load_error_strings();
    SSL_library_init();
    OpenSSL_add_all_algorithms();

... 而 OpenSSL 1.1.1 定义了另一个宏

#define OPENSSL_malloc_init() \
    CRYPTO_set_mem_functions(CRYPTO_malloc, CRYPTO_realloc, CRYPTO_free)

我发现了以下内容 https://***.com/questions/46005827/does-activemq-cpp-3-9-4-support-openssl-1-1-0/55131365#55131365 但我不清楚它是否已得到解决并且我在正确构建它时遇到了问题,或者 OpenSSL 1.1.1 实际上不受版本 3.9.5 的支持? 任何帮助或澄清将不胜感激

【问题讨论】:

【参考方案1】:

该版本的 CMS 客户端不支持 OpenSSL 1.1.1,因此很可能不允许客户端构建,如果它确实构建,它可能会失败。 CMS 客户端尚未积极开发,因此我会查看备用客户端库,例如 Apache Qpid 项目的 AMQP 客户端。

【讨论】:

感谢蒂姆的澄清!这是非常不幸的,根据OpenSSL 1.0.2 系列的 LTS 将继续支持到 2019 年 12 月 31 日,并鼓励 1.0.2 和 1.1.0 的所有用户尽快升级到 1.1.1 .由于不支持它,许多依赖 CMS 客户端的产品将被“搁置一旁”...... Qpid 客户端将支持更多最新的 OpenSSL 库,并且代理支持 AMQP 是否有从 CMS 客户端 API 迁移到 Qpid 客户端的指南?从 Openwire 切换到 AMQP 是否会影响性能或配置?

以上是关于无法使用 OpenSSL 1.1.1 构建 activemq CMS 3.9.5的主要内容,如果未能解决你的问题,请参考以下文章