クラウドサービスを用いたFRUCtoSのHTTPS化
本ページでは一例として、AWS上にHTTPSアクセス可能なFRUCtoSを構築する手順を記載します。
注意
本ページにて記載している方法は構築の一例であり、実運用を考慮したものではありません。
実装先に合わせてIPアドレスやポート番号等の各種パラメータの変更や構成の見直し等、セキュリティ対策を十分に行ってください。使用時に発生したトラブルにつきまして、利用者が一切の責任を負うものとします。
概念図
本例では、SSL/TLSの終端はロードバランサーで行い、Clientとロードバランサーの間をHTTPS、ロードバランサーとFRUCtoSの間をHTTPで通信する構成を構築します。
本手順における前提
- AWSアカウント
- EC2起動、ロードバランサー作成、セキュリティグループ作成、証明書のリクエストの実行権限を有すること
- ドメイン取得
- DNS設定が可能なドメインを取得済であること
- DNSの設定として、DNSサーバにてCNAMEレコードとALIASレコードの登録が行えること
- 作業PC
- FRUCtoSの資材を取得していること
構築手順
EC2の起動
サービスの検索フィールドに「EC2」と入力し、表示されたサービス一覧から「EC2」をクリックします。
画面左のメニューから「インスタンス」をクリックします。
「インスタンスを起動」を押して、新規にEC2を立ち上げます。
必要なインスタンス設定を要件や環境に合わせて実施し、「インスタンスを起動」をクリックしてEC2を起動します。
設定内容は要件や環境によって異なることにご注意ください。
本手順では以下を設定しています。
設定項目 | 本手順での設定値 |
---|---|
名前 | FRUCtoS |
アプリケーションおよびOSイメージ(Amazonマシンイメージ) | Red Hat Enterprise Linux 9 |
インスタンスタイプ | t2.large FRUCtoS用Dockerの動作に必要な要件を満たすタイプを選択 |
キーペア(ログイン) | 「新しいキーペアの作成」から.pem のキーファイルを作成 |
インスタンス起動成功のメッセージを確認します。
EC2を用いたFRUCtoSの構築
EC2への接続の確認
先ほど起動したEC2へログインできることを確認します。
EC2メニューのインスタンスから、先ほど起動したEC2にチェックを入れ、「接続」をクリックします。
EC2への接続方法が表示されます。自身の接続環境に合致するタブに表示される接続方法に従って、起動したEC2へログインできることを確認します。
EC2へのFRUCtoSの資材の転送
FRUCtoSの資材を持つPCからEC2へ、当該資材を転送します。
本例では、Macのホームディレクトリ上のFRUCtoSの資材を、scpコマンドを用いてEC2へ転送しています。
scp -i [秘密鍵のパス] [転送するファイルのパス] [ユーザ名]@[パブリックIP]:[アップロード先のディレクトリパス]
転送が完了したらEC2にログインし、FRUCtoSの資材が転送されていることを確認します。
[ec2-user@ip-172-31-43-232 ~]$ ls -ll
total 448828
-rw-r--r--. 1 ec2-user ec2-user 459599050 Apr 18 07:18 fructos-2.2.0.zip
[ec2-user@ip-172-31-43-232 ~]$
Docker環境の構築
Docker設定手順の手順に従い、EC2上にDocker環境を構築します。
FRUCtoSの構築
構築手順の手順に従い、EC2にFRUCtoSを構築します。
note
本手順では Keycloak Gateway は使用しません。Keycloak Gatewayの手順はスキップします。
証明書の発行
HTTPS通信で必要となるSSL/TLS証明書を発行します。
ドメインの発行
お好きなドメインレジストラにてドメインをご用意ください。
注意
本手順ではDNSの設定の際にCNAMEレコードとALIASレコードの登録を行います。
これらのレコードが登録できるレジストラをご選択ください。
AWS Certificate Manager (ACM) で証明書のリクエスト
ACMを利用して、SSL/TLS証明書をリクエストします。
サービスの検索で"Cer"と入力すると表示される「Certificate Manager」をクリックします。
「証明書をリクエスト」をクリックします。
「パブリック証明書をリクエスト」にチェックが入った状態で「次へ」をクリックします。
事前に用意したドメインを「完全修飾ドメイン名」に入力して、「リクエスト」をクリックします。
リクエストされた旨のメッセージにある「証明書を表示」をクリックします。
表示されたCNAME名とCNAME値を控えます。
CNAME名: _c6e0f05dd99166cf6b243429e7ab20a6.hem-awstest.site.
CNAME値: _12d57b13acbe22819b26315e0d961a82.mhbtsbpdnt.acm-validations.aws.
DNS設定
用意したドメインのDNS設定で上記のCNAME名とCNAME値を登録してください。
CNAME名のドメインとCNAME値の末尾の.
は不要ですので、上記の例では
_c6e0f05dd99166cf6b243429e7ab20a6
と
_12d57b13acbe22819b26315e0d961a82.mhbtsbpdnt.acm-validations.aws
をレジストラにてご登録ください。
サブドメイン名 | 種別 | 値 |
---|---|---|
_c6e0f05dd99166cf6b243429e7ab20a6 | CNAME | _12d57b13acbe22819b26315e0d961a82.mhbtsbpdnt.acm-validations.aws |
証明書の発行確認
DNSの設定が完了したら、AWSの証明書の一覧画面でステータスが発行済みになるまで待ちます。
Network Load Blancer(NLB)の設定
ターゲットグループの作成
EC2のメニューから「ターゲットグループ」をクリックします。
下記を設定し「次へ」をクリックします。
項目 | 値 |
---|---|
ターゲットタイプの選択 | インスタンス |
ターゲットグループ名 | 任意の値を入力します。ここでは「toFructos」と設定しています。 |
プロトコル:ポート | 構築したFRUCtoSのプロトコルとポート番号を設定します(本例ではFRUCtoSのデフォルト「TCP」 「8099」を設定)。 |
「次へ」をクリックすると以下の画面に切り替わりますので、
「使用可能なインスタンス」欄の対象インスタンスにチェックを入れて「保留中として以下を含める」をクリックします。
「ターゲットを確認」欄に対象インスタンスが表示されていることを確認し「ターゲットグループの作成」をクリックします。
ターゲットグループが正常に作成されたメッセージ(下記画像の緑のバナー)を確認し、「アクション」のプルダウンメニューから「新しいロードバランサーに関連付け」を選択します。
ロードバランサーの作成
各項目を設定してロードバランサーを作成します。
基本的な設定
下記のように設定します。
項目 | 値 |
---|---|
ロードバランサー名 | 任意の値を入力します。ここでは「LB-fructos」としています。 |
スキーム | インターネット向け |
IPアドレスタイプ | IPv4 |
ネットワークマッピングの設定
下記のように設定します。
項目 | 値 |
---|---|
VPC | EC2を構築したVPCが表示されていることを確認します。 |
マッピング | xxxx-1a を選択します。 |
セキュリティグループの作成
「新しいセキュリティグループを作成」のリンクをクリックし、ロードバランサーに割り当てるセキュリティグループを作成します。
基本設定として以下のように設定します。
項目 | 値 |
---|---|
セキュリティグループ名 | 任意の値を入力します。ここでは「lb-security」と設定しています。 |
説明 | 任意の値を入力します。 |
VPC | EC2と同じVPCを選択します。 |
インバウンドルールの設定
ここでは、ソースIPアドレスの制限なしで、TCP443ポート宛のIPv4とIPv6のアクセスを許可しています。
セキュリティグループの作成
「セキュリティグループを作成」を押して作成します。
セキュリティグループの選択
ロードバランサーの設定を行っていたブラウザタブに戻り、先ほど作成したセキュリティグループを選択します。
リスナーとルーティング
下記のように設定します。
項目 | 値 |
---|---|
プロトコル | TLS |
デフォルトアクション | 前段の作業「ターゲットグループの作成」にて作成したターゲットグループを選択します。 |
セキュアリスナーの設定
下記のように設定します。
項目 | 値 |
---|---|
証明書の取得先 | ACMから |
証明書(ACMから) | 前段の作業「証明書の発行」で作成した証明書を選択します。 |
ロードバランサーの作成の終了
「ロードバランサーの作成」をクリックします。
EC2のロードバランサー画面に変遷しますので、作成したロードバランサーにチェックを入れ、表示されるDNS名を控えます。
DNSの設定
用意したドメインのDNS設定にて、先ほど控えたロードバランサーのDNS名をALIASレコードとして追加登録します。
サブドメイン名 | 種別 | 値 |
---|---|---|
_c6e0f05dd99166cf6b243429e7ab20a6 | CNAME | _12d57b13acbe22819b26315e0d961a82.mhbtsbpdnt.acm-validations.aws |
ALIAS | LB-fructos-2011a857894e06fb.elb.ap-northeast-1.amazonaws.com |
EC2のセキュリティグループの設定
EC2メニューのインスタンスを開き、FRUCtoSを構築したEC2にチェックを入れて、セキュリティタブからセキュリティグループをクリックします。
「インバウンドのルールを編集」をクリックします。
「ルールを追加」をクリックし、下記を設定します。
項目 | 値 |
---|---|
タイプ | カスタム TCP |
ポート範囲 | 8099 |
ソース | 「セキュリティグループの選択」で作成したセキュリティグループ |
info
EC2へのアクセスをロードバランサー経由のFRUCtoS使用ポート宛のみに制限したい場合は、他のルールを「削除」で消してください。
HTTPSでの通信確認
下記のURLに対してPostmanを用いてGETメソッドのリクエスト(ここでは例としてGET [base]/metadata
インタラクションを実行しています)を送信し、HTTPSでアクセスできることを確認します。
GET https://hem-awstest.site/fructos/metadata (base名は適宜読み替えてください)
下図の様に200 OKのBody出力が確認(アクセスに成功)できたら本手順は終了となります。
info
Postmanの操作方法は、構築手順の4.5. 動作確認用クライアントのインストールと設定を参照してください。
info
上記の出力が確認出来ない場合、Postmanの設定で「SSL certificate verification」がONになっていることを確認してください。