Kali2.0 update到最新版本后安装shadowsocks服务报错问题

本文适用于解决openssl升级到1.1.0以上版本,导致shadowsocks2.8.2启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。

最近将kali升级到了最新版本,编译之后shadowsocks无法启动,报错如下:

INFO: loading config from ss.json 
2016-12-14 22:47:50 INFO loading libcrypto from libcrypto.so.1.1 
Traceback (most recent call last): 
File “/usr/local/bin/sslocal”, line 11, in 
sys.exit(main()) 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/local.py”, line 39, in main 
config = shell.get_config(True) 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py”, line 262, in get_config 
check_config(config, is_local) 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/shell.py”, line 124, in check_config 
encrypt.try_cipher(config[‘password’], config[‘method’]) 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 44, in try_cipher 
Encryptor(key, method) 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 83, in init 
random_string(self._method_info[1])) 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/encrypt.py”, line 109, in get_cipher 
return m[2](method, key, iv, op) 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py”, line 76, in init 
load_openssl() 
File “/usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py”, line 52, in load_openssl 
libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,) 
File “/usr/lib/python2.7/ctypes/init.py”, line 375, in getattr 
func = self.getitem(name) 
File “/usr/lib/python2.7/ctypes/init.py”, line 380, in getitem 
func = self._FuncPtr((name_or_ordinal, self)) 
AttributeError: /usr/lib/x86_64-Linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup

这个问题是由于在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数,如官网中所说:

EVP_CIPHER_CTX was made opaque in OpenSSL 1.1.0. As a result, EVP_CIPHER_CTX_reset() appeared and EVP_CIPHER_CTX_cleanup() disappeared.
EVP_CIPHER_CTX_init() remains as an alias for EVP_CIPHER_CTX_reset().

修改方法: 用vim打开文件:vim /usr/local/lib/python2.7/dist-packages/shadowsocks/crypto/openssl.py (该路径请根据自己的系统情况自行修改,如果不知道该文件在哪里的话,可以使用find命令查找文件位置)跳转到52行(shadowsocks2.8.2版本,其他版本搜索一下cleanup)进入编辑模式将第52行libcrypto.EVP_CIPHER_CTX_cleanup.argtypes = (c_void_p,) 改为libcrypto.EVP_CIPHER_CTX_reset.argtypes = (c_void_p,)再次搜索cleanup(全文件共2处,此处位于111行),将libcrypto.EVP_CIPHER_CTX_cleanup(self._ctx) 改为libcrypto.EVP_CIPHER_CTX_reset(self._ctx)保存并退出启动shadowsocks服务:service shadowsocks start 或 sslocal -c ss配置文件目录问题解决

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蓝天

Thrift编译错误('::malloc' has not been declared)

问题版本:0.9.0 make[4]: Entering directory `/tmp/X/thrift-0.9.0/lib/cpp' /bin/sh...

863
来自专栏iOS122-移动混合开发研究院

AFNetworking 原作者都无法解决的问题: 如何使用ip直接访问https网站?

背景 最近App似乎有报异常是DNS无法解析,尝试解决此问题.搜集到的资料很少,甚至连AFN原作者都判定这可能是一个无解的问题,参见: https://gith...

2659
来自专栏杂烩

rancher导入rke 原

    REK是Rancher Kubernetes Engine,通过rke工具可以快速简单地搭建一套 Kubernetes集群。

1586
来自专栏about云

spark编译:构建基于hadoop的spark安装包及遇到问题总结

问题导读 1.spark集群能否单独运行? 2.如何在spark中指定想编译的hadoop版本? 3.构建的时候,版本选择需要注意什么? 上一篇 如何查看...

4426
来自专栏Hadoop实操

如何获取Hive正在执行或者已结束的的MapReduce作业的SQL语句

当我们提交Hive SQL语句到YARN后,有时如果我们想监控某个SQL的执行情况,需要查看具体SQL语句,如果这个SQL语句比较长,无论是通过YARN的808...

5695
来自专栏码字搬砖

Flink安装

前提:安装:已安好hadoop,环境已经配好 java 7.X 及其以上 scala有对应版本 单机: 下载、解压、 需要注意:flink与hadoop版...

942
来自专栏大数据-Hadoop、Spark

Spark local mode 报Input path does not exist: hdfs://

写了个spark任务, cd C:\Users\Administrator\IdeaProjects\SparkSQLProject> mvn clean pa...

43010
来自专栏Hadoop实操

如何使用Oozie API接口向Kerberos集群提交Java程序

在CDH集群外的节点向集群提交MapReduce作业的方式有多种,前面Fayson介绍了《如何跨平台在本地开发环境提交MapReduce作业到CDH集群》和《如...

6297
来自专栏Hadoop实操

如何使用Oozie API接口向Kerberos环境的CDH集群提交Spark作业

在CDH集群外的节点向集群提交Spark作业的方式有多种,前面Fayson介绍了Livy相关的文章主要描述如何在集群外节点通过RESTful API接口向CDH...

3747
来自专栏Hadoop实操

如何在启用Sentry的CDH集群中使用UDF

在前面的文章Fayson介绍过UDF的开发及使用《如何在Hive&Impala中使用UDF》,大多数企业在使用CDH集群时,考虑数据的安全性会在集群中启用Sen...

5419

扫码关注云+社区