【发布时间】:2017-09-01 18:08:55
【问题描述】:
我正在尝试构建 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):错误 C3861:“CRYPTO_malloc_init”:找不到标识符
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667):错误 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(667):错误 C2227:“->值”左侧必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(667):错误 C2227:“->数据”的左侧必须指向类/结构/联合/通用类型
..\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:“->值”左侧必须指向类/结构/联合/通用类型
..\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):错误 C2227:“->值”左侧必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671):错误 C2227:'->length' 的左侧必须指向类/结构/联合/通用类型
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): 错误 C2198: 'X509V3_EXT_D2I': 调用的参数太少
..\src\main\decaf\internal\net\ssl\openssl\OpenSSLSocket.cpp(671): error C2198: 'X509V3_EXT_I2V': too little arguments for call
自从在 3.2.0 中添加支持以来,发行说明没有提及任何关于 OpenSSL 的内容。但是,ActiveMQ-CPP 3.9.4 下载中包含的 README.txt 文件指出:
如果您希望使用 SSL 传输,那么您需要在您的系统上安装 OpenSSL 及其包含的组件。我们建议您使用 1.0.0 或更高版本以获得最佳性能和安全性,但也可以使用 0.9.8 版本。
This StackOverflow question 似乎表明我的第一个错误(见上文)暗示 ActiveMQ-CPP 不支持 OpenSSL 1.1.0。但是,ActiveMQ-CPP Jira site 上似乎没有关于缺乏 OpenSSL 1.1.0 支持的问题,他们自己的文档明确指出我应该能够使用“1.0.0 或更高版本”。
有谁知道 ActiveMQ-CPP 3.9.4 是否支持 OpenSSL 1.1.0?
【问题讨论】:
-
从引用问题中的一个答案...见Apache Issue 60061 - OpenSSL 1.1.0 support。
-
@jww 我提供了一个链接的那个问题是针对不同产品的。您发布的链接是针对 Apache httpd-2 报告的问题,而不是 Apache ActiveMQ-CPP。
-
拒绝投票者是否愿意发表评论?关于如何改进问题的任何建议?
-
这可能在 ActiveMQ-CPP 3.9.5 中得到解决:参见Jira ticket AMQCPP-623。这个问题含糊不清,但正是在该答案发布几个月后回答此问题的人打开了它。
-
@TimBish 确认 here ActiveMQ-CPP 3.9.5 仍然不支持 OpenSSL 1.1.1。似乎不再维护 ActiveMQ-CPP。 QPid Proton 是受更好支持的 C++ 消息传递客户端。
标签: openssl activemq-cpp