请联系我 有广告合作意向的 请联系我

Erlang R16+ Crypto模块与最新Openssl不兼容问题

服务器上新安装了R16B03-1版本后,启动crypto模块 时出现下面的错误:

crypto

起因是R16+版本和最新的openssl不兼容所至,服务器上的openssl版本是1:1.0.1e-51.el7_2.4。

网上有的说下载openssl源码修改编译参数即可解决,没去测试,发现erlagn.org提供解决方法:http://erlang.org/pipermail/erlang-questions/2013-December/076327.html


修改crypto源码包中的lib/crypto/c_src/crypto.c文件,把原有定义

#if OPENSSL_VERSION_NUMBER >= 0x009080ffL \
&&!defined(OPENSSL_NO_EC) \
&&!defined(OPENSSL_NO_ECDH) \
&&!defined(OPENSSL_NO_ECDSA)
# define HAVE_EC
#endif

修改为:

#if OPENSSL_VERSION_NUMBER >= 0x009080ffL \
&&!defined(OPENSSL_NO_EC) \
&&!defined(OPENSSL_NO_EC2M) \
&&!defined(OPENSSL_NO_ECDH) \
&&!defined(OPENSSL_NO_ECDSA)
# define HAVE_EC
#endif

重新编译安装Erlang即可。

一键替换命令

sed -i 's/0x009080ffL/0x009080ffL \&\& !defined(OPENSSL_NO_EC2M)/g' lib/crypto/c_src/crypto.c