いくつかのコンパイルオプションを有効にするために 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/
# /usr/local/etc/rc.d/apache start
# pkg install tomcat8
tomcat8_enable="YES"
<user username="tomcat" password="secret" roles="manager-gui,admin-gui"/>
TLSを有効にします。
<Connector port="8443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/usr/local/apache-tomcat-8.0/.keystore"
keyAlias="tomcat" keyPass="changeit" keystorePass="changeit" />
マネージャのアップロード制限を大きくします。
--- 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-8.0"
JAVABIN="/usr/local/openjdk8/bin"
HOSTNAME="`uname -n`"
SHORTNAME="tomcat"
KEYSTORE=".keystore"
PASSWD="changeit"
cd $TOMCATDIR
openssl pkcs12 -export -in $LEDIR/$HOSTNAME/cert.pem -inkey $LEDIR/$HOSTNAME/privkey.pem -out $HOSTNAME.p12 -name $SHORTNAME -CApath $LEDIR/$HOSTNAME/chain.pem -caname root -passout pass:
if [ -f $TOMCATDIR/$KEYSTORE ]; then
$JAVABIN/keytool -list -keystore $KEYSTORE -storepass $PASSWD
cp -p $TOMCATDIR/$KEYSTORE $TOMCATDIR/${KEYSTORE}.old
rm -f $TOMCATDIR/$KEYSTORE
fi
$JAVABIN/keytool -importkeystore -deststorepass $PASSWD -destkeypass $PASSWD -destkeystore $KEYSTORE -srckeystore $HOSTNAME.p12 -srcstoretype PKCS12 -srcstorepass "" -alias $SHORTNAME
$JAVABIN/keytool -import -trustcacerts -alias root -file $LEDIR/$HOSTNAME/chain.pem -keystore $KEYSTORE -storepass $PASSWD
$JAVABIN/keytool -list -keystore $KEYSTORE -storepass $PASSWD
rm -f $HOSTNAME.p12
以下のようにキーストアが作成されます。
Keystore type: JKS
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 tomcat8 start
Tomcatに直接アクセスしてみます。
サンプルプログラムがすべてのパターンで動作することを確認します。
と言いつつ、WebSocketがhttpd経由だと動かない...
|
Copyright ©2000-2018 T.Hiraga <hiraga@next-hop.net> All Rights Reserved. Last modified: $Date: 2016/12/02 22:19:46 $ |