ActiveMQ-CPP 3.9.4是否支持OpenSSL 1.1.0?

时间:2017-09-01 18:08:55

标签: openssl activemq-cpp

我正在尝试构建最新版本的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:' - > value'的左边必须指向class / struct / union / generic type
  .. \ src \ main \ decaf \ internal \ net \ ssl \ openssl \ OpenSSLSocket.cpp(667):错误C2227:' - >数据'左边必须指向类/ struct / union / generic类型
  .. \ 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'的左边必须指向class / struct / union / generic type
  .. \ src \ main \ decaf \ internal \ net \ ssl \ openssl \ OpenSSLSocket.cpp(670):错误C2227:' - >长度'的左边必须指向类/ struct / union / generic type
  .. \ 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:' - > value'的左边必须指向class / struct / union / generic type
  .. \ src \ main \ decaf \ internal \ net \ ssl \ openssl \ OpenSSLSocket.cpp(671):错误C2227:' - >长度'的左边必须指向类/ struct / union / generic类型
  .. \ src \ main \ decaf \ internal \ net \ ssl \ openssl \ OpenSSLSocket.cpp(671):错误C2198:'X509V3_EXT_D2I':调用的参数太少了
  .. \ 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版本也可以使用。

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?

2 个答案:

答案 0 :(得分:2)

客户端不支持ActiveMQ mailing lists上报告的OpenSSL 1.1.0。我认为没有人愿意为这个问题打开一个问题。

答案 1 :(得分: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