いくつかのコンパイルオプションを有効にするために 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 $ |