ブログ

【CCH® Tagetik】アプリケーション環境構築マニュアル④Apache、Elastic IPアドレスサーバー証明書の設定

この記事をSNSでシェア!

企業の経営管理に必要な情報を1つのシステムで管理できるウォルターズ・クルワーの提供する経営管理プラットフォーム「CCH®Tagetik」。

全世界で2000社の利用実績を有し、日本国内でも多くのお客様が採用しているシステムになります。当社メンバーもいくつかのプロジェクトに携わらせていただいています。
このブログでは全4回にわたり、CCH®Tagetikの環境構築手順をご紹介させていただきます。第3回ではログイン後の初期設定までをご説明いたしましたが、最後のステップとして、第4回は外部公開を行うApacheの設定からサーバ証明書の設定についてをご説明いたします。

※本記事は、株式会社KYOSOによる技術検証の経験に基づいたものであり、CCH® Tagetikの公式ドキュメントではありません。 製品のアップデートにより、本記事の内容が最新の仕様と異なる可能性があります。導入に際しては、最新の公式情報をご確認ください。

全体の手順

CCH®Tagetikアプリケーション環境構築の全体の手順は、以下の通りです。
本記事では、外部公開を行うApacheの設定からサーバ証明書の設定について記載いたします。

  1. JDKの設定
  2. PostgreSQL 13の設定
  3. Wildflyの設定
  4. Data Sourceの設定
  5. アプリケーションデプロイ
  6. CCH®Tagetikの初回ログイン
  7. ログイン後の初期設定
  8. Apacheの設定
  9. Elastic IPアドレスの設定
  10. サーバー証明書の設定

今回のブログゴール

全4回のブログを通じたゴールは、「構築したCCH®Tagetik環境にログインできる」ことですが、今回のブログでは、「外部公開を行うApacheの設定からサーバー証明書の設定」をご説明します。

手順

Apacheの設定

外部公開を行うために、Webサーバソフトウェアの「Apache(アパッチ)」のインストールを実施します。

Apacheのインストール

1.以下URLにアクセスし、Apacheをダウンロードします。
https://www.apachelounge.com/download/VC14/

2.解凍したhttpd-2.4.41-win64-VC14に格納されている「Apache24」をWindowsサーバーのCドライブ直下へ配置します。
※任意のフォルダを作ってその下の階層に配置した場合はhttpd.confの編集が必要になります。

3.コマンドプロンプトで、binフォルダに移動します。

cd C:\Apache24\bin

4.以下コマンドより、Apacheをインストールします。
「Errors~」の次の行に何もメッセージが表示されなければインストール成功です。

httpd.exe -k install

5.C:\Apache24\bin配下の「ApacheMonitor.exe」を実行します。

6.右下のタスクバーにアイコンが表示されるため、ダブルクリックしてモニターを表示させます。

7.「Start」をクリックします。

8.マークが緑色なり、正常起動できていることを確認します。

9.以下URLを開き、デフォルトのindex.htmlが表示されることを確認します。
http://localhost/

ポートの開放

Apache が使用するポート番号(80:HTTP、443:HTTPS)のポートを開放します。

1.スタートメニュー > Windows管理ツールから、「セキュリティが強化されたWindows Defender
ファイアウォール」を開きます。

2.左側のパネルから「受信の規則」をクリックし、右側のパネルから「新しい規則」をクリックします。

3.「ポート」選択して、「次へ」をクリックします。

4.以下内容を設定し、「次へ」をクリックします。

  • 「TCP」選択
  • 「特定のローカルポート」を選択し、Apache が使用するポート番号「80,443」を入力

5.「接続を許可する」を選択し、「次へ」をクリックします。

6.すべての項目にチェックされていることを確認し、「次へ」をクリックします。

7.任意の名称を入力し、「完了」をクリックします。

8.作成した規則が有効になっていることを確認します。

設定ファイルの編集

Apache と Wildfly を連携させるための設定を行います。
Apache と Wildfly を連携させる目的は、インターネットからのリクエストを httpd で受付け、Java での動的な処理が必要なページの処理は裏方となる Wildfly に実行させたいためです。
Apache httpd と Wildfly を連携するには、AJP (Apache JServ Protocol) プロトコルが必要になります。
AJP プロトコルは Wildflyと通信するためのプロトコルです。Apache httpd が受け付けたリクエストを Wildfly に連携させるために、この AJP プロトコルを用いて通信を行います。 Apache httpd で AJP を利用するためには mod_proxy_ajp というモジュールをインストールして利用します。

1.以下に格納されている「httpd.conf」ファイルを開きます。
・格納場所:C:\Apache24\conf

2.mod_proxy_ajpを有効にする場合、依存している「mod_proxy」モジュールも有効にする必要があります。以下モジュールのコメントアウト(#)を外し、モジュールを有効化します。
・LoadModule proxy_module modules/mod_proxy.so
・LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

3.Wildflyに連携するための設定ファイルを別途作成するため、最終行に設定ファイルを読み込むための内容を追記します。

Include conf/extra/httpd-proxy.conf

4.以下のフォルダにWildflyに転送するための設定ファイル「httpd-proxy.conf」を作成します。
・格納場所:C:\Apache24\conf\extra

5.作成したファイルに以下を追記し、保存します。

ProxyPass /Tagetikcpm ajp://localhost:8009/tagetikcpm 

Wildfly と連携したいパスと Wildfly のサーバーとパスを指定。
Apacheの/Tagetikcpmのアクセスが、AJPプロトコルで8009ポートを使用して、Wildflyへ連携されます。

ProxyTimeout 600  

初回起動時の処理展開でApacheがタイムアウトする可能性があるため処理タイムアウトの値を設定。

6.WildFly側の設定を行うために以下に格納されている「standalone.xml」ファイルを開きます。
・格納場所: C:\wildfly22.0.1.Final_tgkCustomization4.0\wildfly\standalone\configuration

7.AJPプロトコルを8009ポートで受け取るための以下内容を追記します。

<ajp-listener name=”ajpListner” socket-binding=”ajp” scheme=”http” enabled=”true”/>

8.以下URLに接続できることを確認します。
http://IPアドレス/tagetikcpm

Elastic IPアドレスの設定

AWSでEC2インスタンスを作成すると、パブリックIPアドレスが割り当てられます。
しかし、割り当てられるIPアドレスは動的IPアドレスのため、EC2インスタンスを立ち上げる度に変更されます。そのため、AWSでパブリックIPアドレスを固定IPアドレスにするためには、Elastic IPをEC2インスタンスに設定する必要があります。
本記事では、すでにElastic IPが割り当てられているため、Elastic IPアドレスの関連付けのみ実施いたします。

Elastic IPアドレスの関連付け

1.AWSコンソールへのログインします。

2.「EC2」をクリックします。

3.「Elastic IP」をクリックします。

4.割り当てられていないElastic IPを選択し、「アクション」>「Elastic IPアドレスの関連付け」を
クリックします。

5.以下項目を設定し、「関連付ける」をクリックします。

  • インスタンス:紐づけを行うインスタンスを選択
  • プライベートIPアドレス:紐づけを行うインスタンスのプライベートIPアドレスを入力

6.インスタンスIDとプライベートIPアドレスに設定した内容が反映されていることを確認します。

7.Nameを設定し、「保存」をクリックします。

8.Nameが正常に変更されたことを確認します。

9.Tagetik_Demoのインスタンスの設定を確認し、パブリックIPv4アドレスが紐づけたElastic IPアドレスに
なっていることを確認します。

10.以下URLが正常に開くことを確認します。
http://パブリックIPv4アドレス/

サーバー証明書の設定

SSLを利用するにはSSLサーバー証明書をインストールする必要があります。
正規にはサーバ証明書を購入する必要がありますが、本記事では非正規の自己証明書を自分で作成する手順を記載します。

OpenSSLのインストール

OpenSSL はインターネットで広く利用されている暗号化通信の仕組みである、SSL/TLS を実現するためのオープンソースのライブラリです。OpenSSL を利用することで、手軽に証明書を発行して SSL/TLS 通信を行った Web サイトの構築などが実現できるようになります。

1.以下URLにアクセスし、「Win64 OpenSSL v1.1.1k」の「MSI」をクリックします。
https://slproweb.com/products/Win32OpenSSL.html

2.ダウンロードした「Win64OpenSSL-1_1_1k.msi」を実行します。

3.「I accept the agreement」にチェックを付けて、「Next」をクリックします。

4.インストール先のフォルダを指定し、「Next」をクリックします。

5.「Next」をクリックします。

6.「The OpenSSL binaries (/bin) directory」にチェックを付けて、「Next」をクリックします。

7.「Install」をクリックします。

8.全てのチェックを外して、「Finish」をクリックします。

OpenSSLコマンドの有効化

OpenSSLインストール後はすぐはコマンドが使用できません。
そのため、環境変数を設定する必要があります。

1.「コントロールパネル」 > 「システム」 > 「システムの詳細設定」をクリックします。

2.詳細設定のタブより、「環境変数」をクリックします。

3.システム環境変数一覧から、Pathを選択し「編集」をクリックします。

4.「新規」をクリックし、インストールフォルダ内の「bin」フォルダのパスを設定します。
設定後、「OK」をクリックします。

5.「OK」をクリックします。

サーバー証明書の発行

◆認証局用のフォルダとファイルの準備

1.秘密鍵を生成するフォルダへ移動します。
生成する場所は、基本的にどこに生成してもよいですが、今回は設定ファイルに記述されているデフォルトに従って記述します。

cd C:\Apache24\conf

2.以下のコマンドを実行し、認証局用の起点フォルダ作成します。

mkdir C:\Apache24\conf\ca

3.正常に「caフォルダ」が作成されていることを確認します。

4.作成した認証局用の起点フォルダに移動します。

cd C:\Apache24\conf\ca

5.以下のコマンドを実行し、秘密鍵以外のファイル(署名の履歴などを保持するファイルやシリアルナンバーを記録するためのファイル)を管理する「demoCA」フォルダを作成します。

mkdir demoCA

6.正常に「demoCAフォルダ」が作成されていることを確認します。

7.以下のコマンドを実行し、SANファイルを作成します。
以前はウェブサーバーのホスト名は、CSR 作成時のコモンネーム (CN) の値として設定すれば十分でした。 しかし、現在は複数のウェブサイトがひとつの証明書で利用できるのに伴い、 X.509 証明書の拡張領域である subjectAltName (SAN) に設定する必要があります。

echo subjectAltName=DNS:localhost,DNS:<パブリックIPv4 DNS>,IP:127.0.0.1,IP:<パブリックIPv4 IPアドレス> TagetikDemo.san

※検証用にlocalhostのDNS、IPアドレスを追加で設定しています。

8.正常にSANファイルが作成されていることを確認します。

9.以下フォルダに署名の履歴などを保持するファイル「index.txt 」という空のファイルを作成します。
・格納場所:C:\Apache24\conf\ca\demoCA

10.以下のコマンドを実行し、シリアルナンバーを記録するためのserial ファイルを作成します。OpenSSL が自動で変更するため、
中身を「01」としdemoCA 配下に作成します。

echo 01> demoCA\serial

11.正常に「serial ファイル」が作成されていることを確認します。

◆秘密鍵の作成

秘密鍵 (secret key)とは、公開鍵暗号で使用される一対の暗号鍵の組のうち、相手方に渡したり一般に公開せず、所有者が管理下に置いて秘匿する必要がある鍵のことになります。

12.以下のコマンドを実行し、秘密鍵を作成します。

openssl genrsa -aes128 2048 > server.key

13.パスワードを設定します。後手順で、パスワードを除去するため、仮で「password」を設定します。

14.再度、パスワードを設定します。

15.「server.key」が正常に作成されていることを確認します。

16.以下のコマンドを実行し、作成した秘密鍵からパスフレーズを除去します。

openssl genrsa -aes128 2048 > server.key

17.秘密鍵を作成した際に設定したパスフレーズを入力します。

◆認証局の署名リクエストの作成

CSR には「公開鍵」とその所有者情報、及び申請者が対応する秘密鍵を持っていることを示すために申請者の署名が記載されています。

18.以下のコマンドを実行し、認証局の署名リクエスト(CSR)を作成します。

openssl req -new -key server.key > ca.csr

19.国名として「JP」を入力します。

20.都道府県名として、「osaka」を入力します。

21.市町村として、「osaka」を入力します。

22.会社名として、「Tagetik_DEMO」を入力します。

23.部門名は設定しないため、そのままEnterを押下します。

24.Common Name は証明書を作成したいサーバのドメインを入力します。
今回は、「localhost」を設定します。

25.Eメールアドレスは設定しないため、そのままEnterを押下します。

26.challenge passwordの設定は不要のため、そのままEnterを押下します。

27.optional company nameの設定は不要のため、そのままEnterを押下します。

28.正常に「server.csr」が作成されていることを確認します。

◆認証局がサーバー用の署名リクエストに署名

29.認証局による署名を以下コマンドより、実行します。

openssl ca -in server.csr -keyfile server.key -cert ca.crt -outdir . -out server.crt -days 3650 -extfile TagetikDemo.san -policy policy_anything

30.「y」を入力します。

31.「y」を入力します。

証明書のインストール

SSLサーバー証明書は端末ごと個別にインストールする必要があります。
インストールする手順は以下の通りです。

◆作成した証明書のインストール

1.作成された「ca.crt」をダブルクリックします。

2.「証明書のインストール」をクリックします。

3.「現在のユーザー」を選択し、「次へ」をクリックします。

4.参照より、「信頼されたルート証明機関」を選択し、「次へ」をクリックします。

5.「完了」をクリックします。

6.「はい」をクリックします。

7.「OK」をクリックします。

◆SSL用のVirtualHostを設定

8.C:\Apache24\confに格納されている「httpd.conf」の以下の箇所のコメントアウトを外します。
・LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
・LoadModule ssl_module modules/mod_ssl.so
・Include conf/extra/httpd-ssl.conf

9.Apacheを再起動します。

10.以下URLに接続できることを確認します。
https://IPアドレス/tagetikcpm/
https://パブリックIPv4DNS/tagetikcpm/

最後に

今回は、外部公開を行うApacheの設定からサーバ証明書の設定までご紹介させていただきました。
これでCCH®Tagetik環境の構築手順の紹介は終わりになります。
自社の技術検証用の環境を構築した際の備忘として、作成いたしましたが、この記事が少しでもエンジニアの皆さまの助けになれば幸いです。
最後まで閲覧いただきありがとうございました。

参考

・Apacheダウンロードサイト
https://www.apachelounge.com/download/VC14/

・OpenSSL公式サイト
https://slproweb.com/products/Win32OpenSSL.html

この記事をSNSでシェア!