文档索引

简介

Apache Tomcat 原生库是 Apache Tomcat 的一个可选组件,它允许 Tomcat 使用 OpenSSL 替换 JSSE 来支持 TLS 连接。

头条新闻

构建

需求

构建 tc-native 需要安装三个组件

  • APR 库
  • OpenSSL 库
  • Java SE 开发工具包 (JDK)

在基于 Debian 的 Linux 中,这些依赖项可以通过以下命令安装

apt-get install libapr1.0-dev libssl-dev

在基于 RPM 的 Linux 中,这些依赖项可以通过以下命令安装

yum install apr-devel openssl-devel

UNIX

在所有 POSIX 系统(Linux、Solaris、HP-UX、AIX 等)上,使用众所周知的 configure 和 make 来构建 tc-native。
在 jni/native 中运行

./configure --help

以阅读所有参数的描述。

./configure --with-apr=$HOME/APR \
            --with-java-home=$JAVA_HOME \
            --with-ssl=$HOME/OPENSSL \
            --prefix=$CATALINA_HOME

以创建包含文件和 makefile,以便能够构建 tc-native。
其中
$HOME/APR 类似于 /usr/bin/apr-1-config 或 apr 安装的路径。
$JAVA_HOME 类似于 /home/jfclere/JAVA/jdk11 或 JDK 安装的路径。任何 JDK 都可以使用,但建议使用与 Tomcat 一起使用的 JVM 版本相同的 JVM。
$HOME/OPENSSL 是 OpenSSL 安装的路径。
$CATALINA_HOME 是生成库将安装的路径。类似于 $HOME/apache-tomcat-10.1.0

configure 能够推断出大多数 OpenSSL 标准安装。因此,大多数情况下,以下命令就足够了

./configure --with-apr=/usr/bin/apr-1-config \
            --with-java-home=/home/jfclere/JAVA/jdk11 \
            --with-ssl=yes \
            --prefix=$CATALINA_HOME

构建库并安装它们

make && make install

库将位于 $CATALINA_HOME/lib 中

Windows

下载 tc-native 的 Windows 源代码并解压缩。

获取 APROpenSSL 的 Windows 源代码。应用 native/srclib 中的补丁,并为您的平台(X86 或 X64)构建 APR 和 OpenSSL。

构建

nmake -f NMAKEMakefile WITH_APR=... WITH_OPENSSL=... APR_DECLARE_STATIC=1

更详细的说明,包括创建标准发布版步骤,请参见 Wiki

安装和测试

配置 Tomcat

Apache Tomcat 默认情况下启用了 AprLifecycleListener。不过,您应该检查您的 conf/server.xml 以确保存在以下类似内容,并且未被注释掉

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

有关配置详细信息,请参见 Apache Tomcat 文档。

UNIX

编辑 $CATALINA_HOME/bin/setenv.sh(如果需要,创建该文件)并将 tc-native 库的路径添加到 LD_LIBRARY_PATH。例如

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH

启动 tomcat 并检查类似以下消息

15-Jun-2022 11:06:23.274 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [2.0.0-dev] using APR version [1.7.0]
15-Jun-2022 11:06:23.298 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.4-dev 3 May 2022]

请参考 tomcat 文档配置连接器(参见 Tomcat 11.0.xTomcat 10.1.xTomcat 9.0.xTomcat 8.5.x

Windows

编辑 $CATALINA_BASE\bin\setenv.bat(如果需要,创建该文件)并将 tc-native 库、apr 和 OpenSSL 的路径添加到 PATH。例如

set PATH=%PATH;C:\cygwin\home\support\tomcat-native-current-win32-src\jni\native\Debug;C:\cygwin\home\support\tomcat-native-current-win32-src\jni\apr\Debug;C:\OpenSSL\lib\VC

启动 tomcat 并检查类似以下消息

15-Jun-2022 11:06:23.274 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [2.0.0-dev] using APR version [1.7.0]
15-Jun-2022 11:06:23.298 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.4-dev 3 May 2022]