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で直接応答したい場合もあると思うので、その際には今回の設定を利用してみてください。