Java Tomcat+OpenSSL符号查找错误未定义符号EC\U键\U新\U按\U曲线\U名称

Java Tomcat+OpenSSL符号查找错误未定义符号EC\U键\U新\U按\U曲线\U名称,java,tomcat,openssl,Java,Tomcat,Openssl,我正在尝试在CentOS上使用OpenSSL设置Tomcat。我已经下载了OpenSSL源代码、Tomcat本机库源代码和Tomcat APR 编译上述所有源代码,使用以下选项编译OpenSSL ./config shared 将生成的.so文件添加到LD_LIBRARY_路径。但是,当我启动tomcat时,我会出现以下错误,而tomcat不会启动 /usr/java/jre1.7.0_51/bin/java: symbol lookup error: /usr/local/apr-1.5.1

我正在尝试在CentOS上使用OpenSSL设置Tomcat。我已经下载了OpenSSL源代码、Tomcat本机库源代码和Tomcat APR

编译上述所有源代码,使用以下选项编译OpenSSL

./config shared
将生成的.so文件添加到LD_LIBRARY_路径。但是,当我启动tomcat时,我会出现以下错误,而tomcat不会启动

/usr/java/jre1.7.0_51/bin/java: symbol lookup error: /usr/local/apr-1.5.1/lib/libtcnative-1.so.0.1.32: undefined symbol: EC_KEY_new_by_curve_name
我是否缺少编译OpenSSL的任何命令行参数?顺便说一句,我提到编译OpenSSL

编辑


为了编译Apache本机库,我提到了-

我也遇到了同样的问题。 我试图用我自己在另一台机器上构建的tcnative启动Tomcat,但使用相同的体系结构和操作系统

由于一些遗留问题,已经安装在我的SunOS中的OpenSSL似乎是在没有ECC支持的情况下构建的。 请参阅ECC和NSA子许可下的OpenSSL用户指南

我所做的是再次重建图书馆。对于带有Sun studio编译器的SunOS 11.2:

OpenSSL 1.0.2d: ./Configure solaris64-x86_64-cc-openssldir=/work/shared/openssl-libdir=lib shared zlib dynamic

四月一日五十二日: ./Configure CC=CC CFLAGS=-m64 LDFLAGS=-m64-prefix=/work/shared/apr-exec prefix=/work/shared/apr

TC1.1.33: ./configure CC=CC-prefix=/work/shared/tcnative-with apr=/work/shared/apr-with ssl=/work/shared/openssl-with java home=/usr/jdk/jdk1.7.0_80 CFLAGS=-m64-fPIC LDFLAGS=-m64

在Tomcat/bin文件夹中,我还创建了setenv.sh,其中包含以下内容:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib:/work/shared/tcnative/lib导出LD_LIBRARY_PATH JAVA_OPTS=-d64-Djava.library.path=/work/shared/tcnative/lib:/usr/jdk/latest/lib-Dfile.encoding=UTF-8-Xms512m-Xmx512m-XX:NewSize=256m-XX:MaxNewSize=256m-XX:PermSize=256m-XX:MaxPermSize=512m-XX:+OptimizeStringConcat-XX:+UseStringCache-XX:+DisableExplicitGC 导出JAVA_选项

正如您所看到的,我在所有地方都使用了前缀路径,以避免系统文件夹中的文件过多。我不能100%确定修复的原因,但是提到的步骤可能会帮助您

更新: 使用ldd libtcnative-1进行检查。因此,在有问题的环境中,当系统无法从编译过程中获取apr和openssl库的路径中找到它们时,它会从默认系统文件夹中获取它们,这是一个惊喜-Hello openssl不带ECC。 因此,如果您在同一个位置构建所有3个文件夹,并在必要时将此预配置文件夹复制到保持相同路径的新系统中,则所有操作都应在不接触任何系统库的情况下工作