文件索引

簡介

Apache Tomcat Native Library 是 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 版本。
$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]