Ubuntu虚拟机安装sslscan遇编译错误:找不到openssl/err.h文件
解决sslscan编译时找不到openssl/err.h的问题
你遇到的核心问题是:编译sslscan时,工具默认去系统标准路径查找OpenSSL文件,但你安装的是自定义分支的openssl-chacha,路径不在默认搜索范围内,导致头文件找不到。下面是一步步的解决方案:
1. 先确认openssl-chacha的安装位置
首先得搞清楚你的openssl-chacha到底装在了哪里。如果是源码编译安装,默认路径通常是/usr/local/ssl。用这条命令检查该路径下是否存在缺失的头文件:
ls -l /usr/local/ssl/include/openssl/err.h
- 如果输出显示文件存在:说明安装没问题,只是编译sslscan时没指定这个路径;
- 如果文件不存在:那你需要重新正确安装openssl-chacha。
2. 重新安装openssl-chacha(若需要)
如果刚才的检查发现头文件不存在,按以下步骤重新安装:
- 先装编译依赖(Ubuntu环境):
sudo apt update && sudo apt install build-essential git - 克隆chacha分支源码:
git clone https://github.com/openssl/openssl.git -b chacha cd openssl - 配置安装路径(指定为
/usr/local/ssl方便后续引用):./config --prefix=/usr/local/ssl - 编译并安装:
make sudo make install
3. 配置环境变量,让系统找到自定义OpenSSL
为了让编译工具能识别你安装的openssl-chacha,需要设置环境变量:
- 临时生效(仅当前终端会话):
export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH export C_INCLUDE_PATH=/usr/local/ssl/include:$C_INCLUDE_PATH - 永久生效(重启终端后依然有效):
打开~/.bashrc文件,添加以下两行:
执行export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH export C_INCLUDE_PATH=/usr/local/ssl/include:$C_INCLUDE_PATHsource ~/.bashrc让配置立即生效。
4. 指定OpenSSL路径编译sslscan
回到sslscan的源码目录,执行这条命令编译(把/usr/local/ssl换成你的实际安装路径):
make OPENSSL=/usr/local/ssl
如果你的sslscan Makefile不支持OPENSSL参数,就手动修改Makefile:
打开sslscan目录下的Makefile,找到CFLAGS和LDFLAGS的配置行,修改为:
CFLAGS += -Wall -Wextra -O2 -I/usr/local/ssl/include LDFLAGS += -L/usr/local/ssl/lib -lssl -lcrypto
修改完再执行make,就能顺利编译了。
5. 验证sslscan是否可用
编译成功后,用这条命令测试:
./sslscan localhost:443
如果能正常输出SSL扫描结果,就说明安装成功了。
内容的提问来源于stack exchange,提问作者None
相关产品推荐
相关产品推荐

