Amazon Linux に OpenAM をインストールしてみる

# ０．はじめに

Amazon Linux に OpenAM をインストールしてみます。

# １．Amazon Linux の EC2 インスタンスを作成する

1. E2 コンソールページから、Amazon Linux の AMI を選択し、ポチポチと EC2 インスタンスを作成します。　
    * AMI ID : 
        * amzn-ami-hvm-2017.03.0.20170401-x86_64-gp2 (ami-859bbfe2)
    * Instance Type : 
        * t2.micro
    * Security Groups :
        * SSH
        * HTTPS
<br>　
2. その後、Elastic IP を割り当てます。

# ２．初期設定やセキュリティ設定

1. 一般的な初期設定やセキュリティ設定などを行います。
    * root ユーザのパスワードの設定
    * ホスト名の変更
        * /etc/sysconfig/network
        * /etc/hosts
        * `hostname`
    * 日本語設定
        * /etc/sysconfig/i18n
    * タイムゾーンの設定
        * /etc/cloud/cloud.cfg
        * /etc/sysconfig/clock
        * /etc/localtime
    * SSH の設定
    * iptables の設定
        * SSH
        * HTTPS

# ３．Apache と Tomcat をインストールし、連携する

1. まずは、Apache をインストールします。

```
sudo yum install httpd
sudo chkconfig httpd on
```
　
2. 続いて、HTTPS の設定を行います。

```
sudo yum install openssl openssl-devel mod_ssl
```

* /etc/httpd/conf.d/ssl.conf の設定を変更
    * SSLProtocol
    * SSLCipherSuite
    * SSLCertificateFile
    * SSLCertificateKeyFile
    * SSLCACertificateFile
    * 補足 : [Apacheでの、パスフレーズ入力なしでの起動方法。 \| SSL・電子証明書ならGMOグローバルサイン](https://jp.globalsign.com/support/faq/93.html)

```
sudo service httpd restart
```
　
3. そして、Tomcat をインストール

```
sudo yum install java-1.7.0-openjdk-devel
sudo yum install tomcat7 tomcat7-webapps tomcat7-admin-webapps
sudo chkconfig tomcat7 on
```
　
4. Tomcat Web アプリケーションマネージャの設定

* /etc/tomcat7/tomcat-users.xml の admin の設定をコメントアウト

```
diff /etc/tomcat7/tomcat-users.xml.ORG /etc/tomcat7/tomcat-users.xml
50c50
< <!-- <user name="admin" password="adminadmin" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" /> -->
---
> <user name="admin" password="[PASSWORD]" roles="admin,manager,admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />
```
　
5. Apache との連携の設定

* /etc/tomcat7/server.xml 

```
diff /etc/tomcat7/server.xml.ORG /etc/tomcat7/server.xml
71c71
<     <Connector port="8080" protocol="HTTP/1.1"
---
>     <Connector port="8009" protocol="AJP/1.3" URIEncoding="UTF-8"
```

* 参考 : [Tomcat & Apache 連携で80番ポートアクセス - 技術ブログ \| 株式会社クラウディア](https://cloudear.jp/blog/?p=1124)

# ４．OpenAM のインストールメディアを取得する

1. 以下のサイトへアクセスし、ログインします。(事前にアカウントのサインアップが必要)
    * [ForgeRock BackStage](https://backstage.forgerock.com/)
<br>　
    * ![1001.png](https://qiita-image-store.s3.amazonaws.com/0/161939/69774636-1ab8-1aaf-f2a8-887fa0562011.png)
　
2. 「Downloads」リンクをクリックします。
<br>　
    * ![1002.png](https://qiita-image-store.s3.amazonaws.com/0/161939/ef46c838-6731-1fdb-048e-4efb5b555976.png)
　
3. 以下の順にリンクをクリックします。
    * product family ... : AM
    * produc ... : OpenAM Enterprise
    * release ... : 13.0.0
    * item ... : OpenAM 13
<br>　
    * ![1003.png](https://qiita-image-store.s3.amazonaws.com/0/161939/626cb1c8-86cd-e425-9a9a-f8ab2732c0d7.png)
　
4. Download 画面が表示されるので、「war」タブを選択し、「DOWNLOAD」ボタンを押下します。
<br>　
    * ![1004.png](https://qiita-image-store.s3.amazonaws.com/0/161939/3dfeecf2-25dc-09fd-9f6e-b4372be4a321.png)
<br>　
    * インストールメディア : OpenAM-13.0.0.war
<br>

# ５．OpenAM をインストールする
1. Security Group と iptables のインバウンドの設定に、以下の設定を追加します。
    * 1689 0.0.0.0/0
    * 4444 0.0.0.0/0
    * 50389 0.0.0.0/0
<br>　
2. 取得したインストールメディア(OpenAM-13.0.0.war)を、以下のディレクトリに格納します。
    * /usr/share/tomcat7/webapps/
        * openam.war ※ OpenAM-13.0.0.war からリネームすること
<br>　
3. サイトにアクセスし、「Manager App」ボタンを押下します。
<br>　
    * ![3001.png](https://qiita-image-store.s3.amazonaws.com/0/161939/f9113676-001c-364d-e0d8-d266979362e0.png)
<br>　
4. ログインダイアログが表示されるので、/etc/tomcat7/tomcat-users.xml で設定したアカウント情報を入力し、ログインします。
<br>　
    * ![3002.png](https://qiita-image-store.s3.amazonaws.com/0/161939/a8fbc0ea-8b88-0f12-1a4f-82d3af2a4fbb.png)
<br>　
5. 「Tomcat Webアプリケーションマネージャ」画面が表示されるので、「アプリケーション」一覧の「/openam」パスのリンクをクリックします。
<br>　
    * ![3003.png](https://qiita-image-store.s3.amazonaws.com/0/161939/13059a71-ba78-5c1a-4ced-0ae204f33a71.png)
<br>　
6. 「設定オプション」画面が表示されるので、「カスタム設定」の「新しい設定の作成」リンクをクリックします。
<br>　
    * ![0001.png](https://qiita-image-store.s3.amazonaws.com/0/161939/996be831-816e-1f38-7aa5-761b09669f57.png)
<br>　
7. 「ライセンス同意確認」画面が表示されるので、チェックして、「Continue」ボタンを押下します。
<br>　
    * ![0002.png](https://qiita-image-store.s3.amazonaws.com/0/161939/607ba5df-4cc3-afd1-1fa4-7edfa9a7a3bb.png)
<br>　
8. 「手順１：一般 - カスタム設定オプション」画面が表示されるので、デフォルトユーザーのパスワードを設定し、「次へ」ボタンを押下します。
<br>　
    * ![0003.png](https://qiita-image-store.s3.amazonaws.com/0/161939/0f7649dc-5b02-af01-8b50-4587a37b617a.png)
<br>　
9. 「手順２：サーバー設定 - カスタム設定オプション」画面が表示されるので、以下の項目を設定し、「次へ」ボタンを押下します。
    * サーバーURL : ※デフォルト
    * Cookie ドメイン : ※デフォルト
    * プラットフォームロケール : ja_JP
    * 設定ディレクトリ : ※デフォルト
<br>　
    * ![0004.png](https://qiita-image-store.s3.amazonaws.com/0/161939/e50f81c7-3d05-edf5-b66e-cf27d39416bc.png)
<br>　
10. 「手順３：設定データストア設定 - カスタム設定オプション」画面が表示されるので、以下の項目を設定し、「次へ」ボタンを押下します。
    * ● 最初のインスタンス ○ 既存の配備に追加しますか。 ※デフォルト
    * 設定データストア : ※デフォルト
    * SSL が有効 : ※デフォルト
    * ホスト名 : ※デフォルト
    * ポート : 50389
    * 管理者ポート : 4444
    * JMX ポート : 1689
    * 設定ディレクトリ : ※デフォルト
    * 設定ディレクトリ : ※デフォルト
<br>　
    * ![0005.png](https://qiita-image-store.s3.amazonaws.com/0/161939/5be1f4ed-c6fa-bdea-f4b6-f3dc3959fbd0.png)
<br>　
11. 「手順４：ユーザーデータストア設定 - カスタム設定オプション」画面が表示されるので、以下の項目を設定し、「次へ」ボタンを押下します。
    * ● OpenAM のユーザーデータストア
    * ○ その他のデータストア
<br>　
    * ![0006.png](https://qiita-image-store.s3.amazonaws.com/0/161939/3d133555-d89e-d2e1-ac4f-eea341afc540.png)
<br>　
12. 「手順５：サイト設定 - カスタム設定オプション」画面が表示されるので、以下の項目を設定し、「次へ」ボタンを押下します。
    * ● いいえ
    * ○ はい
<br>　
    * ![0007.png](https://qiita-image-store.s3.amazonaws.com/0/161939/b84c28f7-6ee7-2618-ae1f-52a70e7ac0db.png)
<br>　
13. 「手順６：デフォルトのポリシーエージェントユーザー - カスタム設定オプション」画面が表示されるので、パスワードを設定し、「次へ」ボタンを押下します。
<br>　
    * ![0008.png](https://qiita-image-store.s3.amazonaws.com/0/161939/20e67d24-b075-faf7-af6a-c49fffe8fc16.png)
<br>　
14. 「設定ツールの概要と詳細 - カスタム設定オプション」画面が表示されるので、確認して、「設定の作成」ボタンを押下します。
<br>　
    * ![0009.png](https://qiita-image-store.s3.amazonaws.com/0/161939/f3e3d404-29c6-3b3c-8970-99a7382e0bb6.png)
<br>　
15. ダイアログが表示されるので、しばし、待ちます。
<br>　
    * ![0010.png](https://qiita-image-store.s3.amazonaws.com/0/161939/c0ec9b36-07a9-0b39-d909-b3fbd5192b9e.png)
<br>　
16. が…、
よくわかりませんが、いくら待っても完了画面が表示されないので、以下のインストールログファイルに、完了のメッセージが表示されたら、OK みたいです。
    * インストールログファイル : /usr/share/tomcat7/openam/install.log
    * 「Finished dumping all configuration parameters」
<br>　
16. https://〜/openam/ にアクセスすると、ログイン画面が表示されるので、
設定したデフォルトユーザー(amAdmin)アカウント情報を入力し、ログイン出来ればインストールの完了です。
<br>　
    * ![2001.png](https://qiita-image-store.s3.amazonaws.com/0/161939/60aef402-5488-665e-44d5-608cdc7a7e37.png)

# ６．署名鍵の作成と差替

以下のサイトの手順を元に署名鍵を作成し、デフォルトで設定されている署名鍵(test)と差し替えます。

* (OpenAM技術Tips Vol.2『OpenAM SAML 設定手順』)[http://www.openam.jp/wp-content/uploads/techtips_vol2.pdf]

署名鍵の作成後、
以下のサイトを参考に、公開鍵も作成しておきます。

* (keytool ユーティリティーを使って証明書を生成する (Sun Java System Application Server 9.1 管理ガイド))[https://docs.oracle.com/cd/E19159-01/820-4604/ablrb/index.html]

# ７．デバッグレベルの変更

以下のサイトを参考に、デバッグレベルを「メッセージ」に変更します。

* (OpenAMのデバッグログについて | OSS ∞ Lab)[https://t246osslab.wordpress.com/2016/06/19/openam%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%83%AD%E3%82%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/]

# ９９．ハマりポイント

* まず、デフォルト設定でやろうとしたんですが、うまくいきませんでした…。
仕方なく、カスタム設定をすることに…。
<br>　
* 「手順３：設定データストア設定 - カスタム設定オプション」画面の所で、色々と設定を変更するも、結局は記載した設定でないとうまくいきませんでした。また、Security Group や iptables でポート開けなきゃいけないのに忘れてて、ウンウンうなることに…。
<br>　
* あと、インストールの完了画面がいつまでたっても表示されず…。

# ＸＸ．まとめ

次は、各種認証機能の連携の確認をしていこうかなと。