无法使用 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的主要内容,如果未能解决你的问题,请参考以下文章

openssl 包含 Visual Studio 2012 无法识别的路径

macOS 上的 OpenSSL 1.0.2m

Ruby 2.6.6 OpenSSL 1.1.1g - 证书验证失败(无法获取本地颁发者证书)

Nmake构建失败

使用 BJam 使用 openssl 构建 libtorrent

如何使用 Visual Studio 2017 在 Windows 上构建 OpenSSL?