HTTPSでFessにアクセスする際、ApacheやNginxを使用してHTTPSリバースプロキシを設定することで、Fess側の追加設定を回避できます。 この設定により、リバースプロキシがセキュリティ層を担い、Fessへは通常のHTTP通信で情報を転送することが可能です。

一方、Windows環境のように、Fess自体からHTTPSでの応答が必要なケースもあります。 このような場合は、Fessにキーストアを設定して、HTTPS通信を利用できるようにします。

今回は、この設定に必要なSSL証明書を利用するための設定方法をご紹介します。

PFXファイルの作成

SSL証明書の設定に必要となる秘密鍵(例:your_private.key)と証明書(例:your_certificate.crt)は事前に生成してあるものとします。 また、中間証明書(例:intermediate.crt)がある場合は、それも用意しておきます。

証明書の生成方法については、SSL証明書を発行している会社のサイトなどを参照してください。

今回は、証明書等からPFXファイルを生成して、キーストアにインポートして利用します。 PFXファイルは、秘密鍵と公開鍵証明書を含む、パスワードで保護されたセキュリティ証明書ファイルです。

opensslコマンドを利用して、fessという名前でfess.pfxを生成します。 コマンドを実行するとPFXファイルのパスワードの設定を求められるので、設定してください。

openssl pkcs12 -export -in your_certificate.crt -inkey your_private.key -certfile intermediate.crt -out fess.pfx -name fess

PFXファイルのパスワードはキーストアにインポートする際に必要になります。

キーストアの作成

キーストアは、秘密鍵、公開鍵証明書および信頼された証明書を安全に格納し、管理するためのメカニズムです。 キーストアファイルは、証明書や秘密鍵だけでなく、中間証明書やルート証明書なども含めた、さまざまな証明書チェーンを管理することができます。 適用したいSSL証明書をキーストアファイルにインポートしてFessで使えるようにします。

まず、keytoolコマンドでキーストアファイルを作成します。 以下のようなkeytoolコマンドを実行して生成します。

keytool -genkey -alias [別名] -keyalg RSA -keystore [キーストアファイル名] -validity [有効期限]

実行すると、以下の項目の入力を求められるので、ご利用の環境に合わせて入力してください。

項目 設定内容
Enter keystore password 任意のパスワード
Re-enter new password 任意のパスワード
What is your first and last name? ドメイン名など
What is the name of your organizational unit? 部署名など
What is the name of your organization? 組織名
What is the name of your City or Locality? 市町村名
What is the name of your State or Province? 都道府県名
What is the two-letter country code for this unit? 国名を英数字2文字で指定

以下は実行例です。

> keytool -genkey -alias fess -keyalg RSA -keystore fess.keystore -validity 365
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  search.n2sm.co.jp
What is the name of your organizational unit?
  [Unknown]:  IT Department
What is the name of your organization?
  [Unknown]:  N2SM
What is the name of your City or Locality?
  [Unknown]:  Chiyoda-ku
What is the name of your State or Province?
  [Unknown]:  Tokyo
What is the two-letter country code for this unit?
  [Unknown]:  JP
Is CN=fess-server.example.net, OU=IT Department, O=N2SM, L=Chiyoda-ku, ST=Tokyo, C=JP correct?
  [no]:  yes

キーストアのパスワードは、PFXファイルをインポートする際に必要になります。

PFXファイルのインポート

keytoolコマンドを実行して、PFXファイルをキーストアにインポートします。

keytool -importkeystore -srckeystore fess.pfx -srcstoretype PKCS12 -srcalias fess -destkeystore fess.keystore -destalias fess

キーストアとPFXファイルのパスワードを順に求められるので、入力してください。

PFXファイルの生成時にnameオプションでfessを指定していますが、異なる名前で作成した場合は、上記のkeytoolコマンドのsrcaliasオプションでその名前を指定してください。

Fessの設定

今回は Windows Server にインストールした Fess 14.11.1 を利用して説明します。 SSL証明書を適用する前に、FessをWindowsにサービスとして登録しておき、HTTPでもアクセスできることを確認しておきます。

作成したfess.keystoreファイルは、今回はD:\opt\sslフォルダに保存しておきます。

作成したキーストアファイルの情報をFessに適用します。 lib\classes\tomcat_config.properties を開き、以下に追記します。

tomcat.secure=true
tomcat.scheme=https

# Enable ssl
tomcat.SSLEnabled=true

# Certificate keystore file
tomcat.certificateKeystoreFile=d:/opt/ssl/fess.keystore
# キーストアファイルのパス

# Certificate keystore password
tomcat.certificateKeystorePassword=password
# キーストアファイル作成時に指定したパスワード

# Certificate keystore alias
tomcat.certificateKeyAlias=fess
# キーストアファイル作成時に設定した別名

# SSL protocol
tomcat.sslProtocol=TLS

# SSL enabled protocols
tomcat.enabledProtocols=TLSv1.2,TLSv1.1,TLSv1

Fess のデフォルトのポート番号が8080なので、bin\service.bat を開いて -Dfess.port を443に変更します。

set FESS_PARAMS=-Dfess;-Dfess.home="%FESS_HOME%";-Dfess.es.dir="%SEARCH_ENGINE_HOME%";-Dfess.home="%FESS_HOME%";-Dfess.context.path="/";-Dfess.port=443;-Dfess.webapp.path="%FESS_HOME%\app";-Dfess.temp.path="%FESS_HOME%\temp";-Dfess.log.name="%APP_NAME%";-Dfess.log.path="%FESS_HOME%\logs";-Dfess.log.level=warn;-Dlasta.env=web;-Dtomcat.config.path=tomcat_config.properties

設定が終わったら、以下の手順でサービス再登録して、Fessを再起動してください。

bin\service.bat stop
bin\service.bat remove
bin\service.bat install
bin\service.bat start

HTTPSでのアクセス確認

Fessを起動後、HTTPSでアクセスしてみてください。

* * *

今回はキーストアファイルを使ったSSL証明書の適用方法について紹介しました。 HTTPSリバースプロキシなどを利用せず、FessがHTTPSで直接応答したい場合もあると思うので、その際には今回の設定を利用してみてください。