背景
使用VMWare搭建ubuntu18.04虚拟机,gmssl:2.5.4,openssl:1.1.0d
case发生场景
由于需要使用国密算法, 所以通过clone了github的gmssl源码包,根据http://gmssl.org/docs/quickstart.html进行编译安装,安装完毕后,运行gmssl version出错如下:
gmssl:relocation error: gmssl: symbol BIO_debug_callback version OPENSSL_1_1_0d not defined in file libcrypto.so.1.1 with link time reference。
经过查询,找到如下解决办法,
https://blog.csdn.net/nange_nice/article/details/82182635
替换完成后,gmssl正常使用。
下午继续使用虚拟机时,发现无法上网,所以开始了关于网络的排查。
网络排查和解决
刚开始以为自己之前使用的是wifi,所以一直在找为什么虚拟机未发现wifi适配器,后来再一次重启中,发现有报错fail to start WPA supplicant,查询找到了如下关于网络的解决方案:
https://www.cnblogs.com/bohat/p/10296200.html
试探性地进行解决时,发现报错与上午解决GmSSL问题时cp的两个动态库有关,这时才知道是上午的操作导致了网络问题,所以重新编译安装了openssl。
重新编译安装见:https://www.cnblogs.com/skzxc/p/12555668.html
此时网络恢复正常,但是GmSSL仍然有问题。
解决GmSSL动态库问题
此时意识到上午的解决方法不可行,所以继续查询报错
后来,终于找到了解决办法:
https://blog.csdn.net/sihuibin/article/details/102638630
通过改变makefile改变依赖库的位置,可以完美解决问题。
总结
至此,困扰了我半天的问题完全解决。感谢以上链接中的博主提供的方案~希望大家善用百度和谷歌。
最新后续,上边的安装方法似乎还是会影响openssl的使用,所以–no-shared安装gmssl,并且安装openssl1.1.1l。具体见最新博文