Tomcat 8.0版はこちら
いくつかのコンパイルオプションを有効にするために ports からインストー ルします。
# cd /usr/ports/www/apache24 # make install clean
HTTP/SSLバッファリング用のカーネルモジュールを有効にします。
accf_http_load="YES" accf_data_load="YES"
apache24_enable="YES" apache24_http_accept_enable="YES"
Let's Encryptの証明書を使用します。
SSLCertificateFile "/usr/local/etc/letsencrypt/live/www.next-hop.net/fullchain.pem" SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/www.next-hop.net/privkey.pem"
プロキシでAJPとWebSocketが使えるようにコメントを外します。
LoadModule proxy_module libexec/apache24/mod_proxy.so LoadModule proxy_wstunnel_module libexec/apache24/mod_proxy_wstunnel.so LoadModule proxy_ajp_module libexec/apache24/mod_proxy_ajp.so
サンプルプログラムをApacheから起動できるようにプロキシでリダイレクトします。
ProxyPass /examples/websocket/ ws://localhost:8080/examples/websocket/ ProxyPassReverse /examples/websocket/ ws://localhost:8080/examples/websocket/ ProxyPass /examples/ ajp://localhost:8009/examples/
# service apache24 start
# pkg install tomcat9
tomcat9_enable="YES"
<user username="tomcat" password="secret" roles="manager-gui,admin-gui"/>
リモートから管理する場合はアクセス元の IP アドレスを追加します。
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10.1.1.1" />
TLS のコメントを外します。
--- server.xml.sample 2020-04-07 22:38:16.000000000 +0900 +++ server.xml 2020-05-05 23:26:13.424435000 +0900 @@ -84,7 +84,6 @@ Either JSSE or OpenSSL style configuration may be used regardless of the SSLImplementation selected. JSSE style configuration is used below. --> - <!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true"> <SSLHostConfig> @@ -92,7 +91,6 @@ type="RSA" /> </SSLHostConfig> </Connector> - --> <!-- Define an SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2 This connector uses the APR/native implementation which always uses OpenSSL for TLS. @@ -113,12 +111,10 @@ --> <!-- Define an AJP 1.3 Connector on port 8009 --> - <!-- <Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="8443" /> - --> <!-- An Engine represents the entry point (within Catalina) that processes every request. The Engine implementation for Tomcat stand alone
マネージャのアップロード制限を大きくします。
--- web.xml.old 2016-05-01 15:57:43.000000000 +0900 +++ web.xml 2016-05-01 19:57:27.000000000 +0900 @@ -51,9 +51,9 @@ </init-param> --> <multipart-config> - <-- 50MB max --> - <max-file-size>52428800</max-file-size> - <max-request-size>52428800</max-request-size> + <;-- 500MB max --> + <max-file-size>524288000</max-file-size> + <max-request-size>524288000</max-request-size> <file-size-threshold>0</file-size-threshold> </multipart-config> </servlet>
Let's Encrypt の証明書はそのままでは Tomcat で使えないので、
OpenSSL を用いて一旦 PKCS#12 形式に変換してから JDK の keytool を
用いてキーストアに変換します。
これらを一括で行うために以下のスクリプトを実行します。
#!/bin/sh export LANG=C LEDIR="/usr/local/etc/letsencrypt/live" TOMCATDIR="/usr/local/apache-tomcat-9.0" JAVABIN="/usr/local/openjdk8/bin" KEYTOOL="$JAVABIN/keytool" OPENSSL="/usr/bin/openssl" HOSTNAME="`uname -n`" SHORTNAME="tomcat" #KEYSTORE="$TOMCATDIR/.keystore" KEYSTORE="$TOMCATDIR/conf/localhost-rsa.jks" PASSWD="changeit" $OPENSSL pkcs12 -export -in $LEDIR/$HOSTNAME/cert.pem -inkey $LEDIR/$HOSTNAME/privkey.pem -out $TOMCATDIR/conf/$HOSTNAME.p12 -name $SHORTNAME -CAfile $LEDIR/$HOSTNAME/chain.pem -caname LetsEncrypt -passout pass: if [ -f $KEYSTORE ]; then $KEYTOOL -list -keystore $KEYSTORE -storepass $PASSWD cp -p $KEYSTORE ${KEYSTORE}.old rm -f $KEYSTORE fi $KEYTOOL -importkeystore -deststorepass $PASSWD -destkeypass $PASSWD -destkeystore $KEYSTORE -deststoretype pkcs12 -srckeystore $TOMCATDIR/conf/$HOSTNAME.p12 -srcstoretype PKCS12 -srcstorepass "" -alias $SHORTNAME $KEYTOOL -import -trustcacerts -alias root -file $LEDIR/$HOSTNAME/chain.pem -keystore $KEYSTORE -storepass $PASSWD $KEYTOOL -list -keystore $KEYSTORE -storepass $PASSWD rm -f $TOMCATDIR/conf/$HOSTNAME.p12 exit # for JSEE with OpenSSL cp $LEDIR/$HOSTNAME/privkey.pem conf/localhost-rsa-key.pem cp $LEDIR/$HOSTNAME/cert.pem conf/localhost-rsa-cert.pem cp $LEDIR/$HOSTNAME/chain.pem conf/localhost-rsa-chain.pem chmod 600 $TOMCATDIR/conf/localhost-rsa-key.pem chown www $TOMCATDIR/conf/*.pem
以下のようにキーストアが作成されます。
Keystore type: PKCS12
Keystore provider: SUN
Your keystore contains 2 entries
root, Dec 3, 2016, trustedCertEntry,
Certificate fingerprint (SHA1):
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
tomcat, Dec 3, 2016, PrivateKeyEntry,
Certificate fingerprint (SHA1): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
# service tomcat9 start
Tomcatに直接アクセスしてみます。
サンプルプログラムがすべてのパターンで動作することを確認します。
と言いつつ、WebSocketがhttpd経由だと動かない...
Copyright ©2000-2018 T.Hiraga <hiraga@next-hop.net> All Rights Reserved. Last modified: $Date: 2020/05/11 04:21:48 $ |