1

我正在尝试构建 Apache ActiveMQ-CPP 的最新版本,即 3.9.4。我已经构建了两个必需的依赖项,APR 和 OpenSSL。对于 OpenSSL,这是 1.1.0f 版本。我能够在没有 SSL 支持的情况下构建所有 4 种配置(Debug、DebugDLL、Release、ReleaseDLL)。但是,尝试使用 SSL 支持构建任何东西会导致许多错误:

..\src\main\decaf\internal\net\ssl\openssl\OpenSSLContextSpi.cpp(186): error C3861: 'CRYPTO_malloc_init': identifier not found
..\src\main\decaf\internal\net\ssl\openssl \OpenSSLSocket.cpp(667): error C2027: use of undefined type 'X509_extension_st'
C:\OpenSource\OpenSSL\1.1.0f\include\openssl/x509.h(79): 注意:见 'X509_extension_st' 的声明
。 \src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667): error C2227: left of '->value' must point to class/struct/union/generic type
..\src\main\ decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667): error C2227: left of '->data' must point to class/struct/union/generic type
..\src\main\decaf\internal\net \ssl\openssl\OpenSSLSocket.cpp(670):错误 C2027:使用未定义类型“X509_extension_st”
C:\OpenSource\OpenSSL\1.1.0f\include\openssl/x509.h(79):注意:见 'X509_extension_st' 的声明
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp (670): 错误 C2227: '->value' 的左边必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(670): 错误C2227:'->length' 左侧必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(670):错误 C2660:'ASN1_item_d2i' :函数不接受 3 个参数
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671):错误 C2027:使用未定义类型 'X509_extension_st'
C:\OpenSource\OpenSSL\1.1。 0f\include\openssl/x509.h(79): 注意: 见 ' 声明X509_extension_st'
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): error C2227: left of '->value' must point to class/struct/union/generic type
..\src\ main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): error C2227: left of '->length' must point to class/struct/union/generic type
..\src\main\decaf\internal \net\ssl\openssl\OpenSSLSocket.cpp(671): error C2198: 'X509V3_EXT_D2I': too little arguments for call
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671):错误 C2198:“X509V3_EXT_I2V”:调用的参数太少

自从在 3.2.0 中添加支持以来,发行说明没有提及任何关于 OpenSSL 的内容。但是,ActiveMQ-CPP 3.9.4 下载中包含的 README.txt 文件指出:

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

这个 StackOverflow 问题似乎表明我的第一个错误(见上文)暗示 ActiveMQ-CPP 不支持 OpenSSL 1.1.0。但是,在ActiveMQ-CPP Jira 站点上似乎没有提交关于缺乏 OpenSSL 1.1.0 支持的问题,并且他们自己的文档明确指出我应该能够使用“1.0.0 或更高版本”。

有谁知道 ActiveMQ-CPP 3.9.4 是否支持 OpenSSL 1.1.0?

4

2 回答 2

2

客户端不支持 ActiveMQ邮件列表中报告的 OpenSSL 1.1.0 。不过,我认为没有人愿意为此提出问题。

于 2017-09-01T22:27:17.227 回答
0

如果您安装了正确的 openssl 和 devel 库,那么 RHEL8/OracleLinux8/Centos8 上的 v3.9.5 似乎现在可以正确编译。

https://activemq.apache.org/components/cms/download/395-release

yum install openssl-devel apr apr-devel apr-util-openssl openssl-pkcs11

我使用 gcc-toolset-10 完成了它,但其他版本的 GCC 也应该可以工作。

我还安装了 ssl compat 库,但我认为这些库不是必需的:compat-openssl10

安装的 OpenSSL 版本为:openssl-1.1.1g-15.el8_3.x86_64

于 2021-07-08T16:18:44.147 回答