7.8. Tomcatで直接認証する場合の設定例¶
7.8.1. Tomcat Connectorのコンフィギュレーションの例¶
TomcatのConnectorの例は、以下を参照下さい。 例では用意した証明書を ${CATALINA_HOME}/conf/certs/ 配下に格納しています。
流用時はコメント部分は除外し、パラメータ類を用途に合った値に書き換えてください。
<Connector port="8443" ... 通信に使用するポート
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="300"
SSLEnabled="true"
scheme="https"
secure="true"
defaultSSLHostConfigName="localhost"> ... defaultのホスト名
<SSLHostConfig hostName="localhost" ... 使用するホスト名
certificateVerificationDepth="5"
certificateVerification="optional" ... クライアント証明書認証の使用
(必須: reuqired, オプション: optional, 使用しない: none)
truststoreType="jks"
truststoreFile="${catalina.base}/conf/certs/cacerts.jks"
truststorePassword="changeit" ... TrustStoreのパスワード 作成時に指定した値を入力
certificateRevocationListFile="${catalina.base}/conf/certs/crl.pem"
revocationEnabled="true"
sslProtocol="TLS"
protocols="+TLSv1+TLSv1.1+TLSv1.2">
<Certificate certificateKeystoreFile="${catalina.base}/conf/certs/localhost_server.jks"
certificateKeystorePassword="changeit" ... KeyStoreのパスワード 作成時に指定した値を入力
certificateKeyAlias="tomcat"
certificateKeystoreType="JKS"
certificateKeystoreProvider="SUN"
type="RSA"/>
</SSLHostConfig>
</Connector>
各要素の詳細は Apache Tomcat 8 Configuration Reference の Connector を参照下さい。
警告
KeyStoreファイルは秘密鍵を含みます。適切なアクセス権を設定し、外部への漏えいが発生しないよう管理してください。
7.8.2. CRL更新用スクリプトの例¶
CRL更新用スクリプトの例は、以下の通りです。
#!/bin/sh
CONFIG_PATH=/opt/tomcat8/conf/certs/
HOST=10.0.255.75
CRL_FILE=crl.pem
CRL_TMP_FILE=crl.pem.tmp
CRL_FILE_PATH=${CONFIG_PATH}/${CRL_FILE}
CRL_TMP_FILE_PATH=${CONFIG_PATH}/${CRL_TMP_FILE}
# 作業ファイルが残っていれば削除
if [ -e ${CRL_TMP_FILE_PATH} ]; then
echo "remove old tmp crl"
rm –f ${CRL_TMP_FILE_PATH}
fi
# サーバからCRLを取得
wget http://${HOST}/${CRL_FILE} -O ${CRL_TMP_FILE_PATH}
# 取得成功した場合
if [ $? -eq 0 ] && [ -e ${CRL_TMP_FILE_PATH} ]; then
# 既にCRLファイルが存在する場合
if [ -e ${CRL_FILE_PATH} ]; then
if diff -q ${CRL_FILE_PATH} ${CRL_TMP_FILE_PATH} > /dev/null ; then
# CRLファイルが更新されていなかった
echo "no update"
else
echo "crl update. reload service"
# CRLファイルが更新されていた場合はファイルを置き換えて再読み込み
mv ${CRL_TMP_FILE_PATH} ${CRL_FILE_PATH}
sudo service tomcat8 restart
fi
else
# CRLファイルが存在しない場合はサービス起動に失敗している 再起動する
echo "get crl first time. restart service."
mv ${CRL_TMP_FILE_PATH} ${CRL_FILE_PATH}
sudo service tomcat8 restart
fi
else
echo "failed to get new crl" 1>&2
fi