メインコンテンツまでスキップ
Version: v2.4.0

クラウドサービスを用いた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インスタンス

「インスタンスを起動」を押して、新規にEC2を立ち上げます。
EC2の新規起動

必要なインスタンス設定を要件や環境に合わせて実施し、「インスタンスを起動」をクリックしてEC2を起動します。
設定内容は要件や環境によって異なることにご注意ください。

本手順では以下を設定しています。

設定項目本手順での設定値
名前FRUCtoS
アプリケーションおよびOSイメージ(Amazonマシンイメージ)Red Hat Enterprise Linux 9
インスタンスタイプt2.large
FRUCtoS用Dockerの動作に必要な要件を満たすタイプを選択
キーペア(ログイン)「新しいキーペアの作成」から.pemのキーファイルを作成

EC2インスタンスの設定

インスタンス起動成功のメッセージを確認します。
EC2インスタンスの設定

EC2を用いたFRUCtoSの構築

EC2への接続の確認

先ほど起動したEC2へログインできることを確認します。

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」をクリックします。 ACMの検索

「証明書をリクエスト」をクリックします。 ACMトップ

「パブリック証明書をリクエスト」にチェックが入った状態で「次へ」をクリックします。 パブリック証明書のリクエスト

事前に用意したドメインを「完全修飾ドメイン名」に入力して、「リクエスト」をクリックします。 完全修飾ドメイン名の入力

リクエストされた旨のメッセージにある「証明書を表示」をクリックします。 証明書の表示

表示されたCNAME名と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

をレジストラにてご登録ください。

サブドメイン名種別
_c6e0f05dd99166cf6b243429e7ab20a6CNAME_12d57b13acbe22819b26315e0d961a82.mhbtsbpdnt.acm-validations.aws

証明書の発行確認

DNSの設定が完了したら、AWSの証明書の一覧画面でステータスが発行済みになるまで待ちます。 証明書の発行

Network Load Blancer(NLB)の設定

ターゲットグループの作成

EC2のメニューから「ターゲットグループ」をクリックします。 ターゲットグループ

下記を設定し「次へ」をクリックします。

項目
ターゲットタイプの選択インスタンス
ターゲットグループ名任意の値を入力します。ここでは「toFructos」と設定しています。
プロトコル:ポート構築したFRUCtoSのプロトコルとポート番号を設定します(本例ではFRUCtoSのデフォルト「TCP」 「8099」を設定)。

グループ詳細の設定
グループ詳細の設定2

「次へ」をクリックすると以下の画面に切り替わりますので、 「使用可能なインスタンス」欄の対象インスタンスにチェックを入れて「保留中として以下を含める」をクリックします。
「ターゲットを確認」欄に対象インスタンスが表示されていることを確認し「ターゲットグループの作成」をクリックします。 ターゲットを登録

ターゲットグループが正常に作成されたメッセージ(下記画像の緑のバナー)を確認し、「アクション」のプルダウンメニューから「新しいロードバランサーに関連付け」を選択します。 ロードバランサーへの関連付けの開始

ロードバランサーの作成

各項目を設定してロードバランサーを作成します。

基本的な設定

下記のように設定します。

項目
ロードバランサー名任意の値を入力します。ここでは「LB-fructos」としています。
スキームインターネット向け
IPアドレスタイプIPv4

Network Load Blancerの基本構成

ネットワークマッピングの設定

下記のように設定します。

項目
VPCEC2を構築したVPCが表示されていることを確認します。
マッピングxxxx-1aを選択します。

Network Load Blancerのネットワークマッピング

セキュリティグループの作成

「新しいセキュリティグループを作成」のリンクをクリックし、ロードバランサーに割り当てるセキュリティグループを作成します。

Network Load Blancerのセキュリティグループの作成

基本設定として以下のように設定します。

項目
セキュリティグループ名任意の値を入力します。ここでは「lb-security」と設定しています。
説明任意の値を入力します。
VPCEC2と同じVPCを選択します。

Network Load Blancerのセキュリティグループ

インバウンドルールの設定

ここでは、ソースIPアドレスの制限なしで、TCP443ポート宛のIPv4とIPv6のアクセスを許可しています。

セキュリティグループのインバウンドルール

セキュリティグループの作成

「セキュリティグループを作成」を押して作成します。

Network Load Blancerのインバウンドルール

セキュリティグループの選択

ロードバランサーの設定を行っていたブラウザタブに戻り、先ほど作成したセキュリティグループを選択します。

Network Load Blancerのセキュリティグループの選択

リスナーとルーティング

下記のように設定します。

項目
プロトコルTLS
デフォルトアクション前段の作業「ターゲットグループの作成」にて作成したターゲットグループを選択します。

Network Load Blancerのリスナーとルーティング

セキュアリスナーの設定

下記のように設定します。

項目
証明書の取得先ACMから
証明書(ACMから)前段の作業「証明書の発行」で作成した証明書を選択します。

Network Load Blancerのセキュアリスナー

ロードバランサーの作成の終了

「ロードバランサーの作成」をクリックします。

Network Load Blancerの作成の終了

EC2のロードバランサー画面に変遷しますので、作成したロードバランサーにチェックを入れ、表示されるDNS名を控えます。

Network Load Balancerの選択

DNSの設定

用意したドメインのDNS設定にて、先ほど控えたロードバランサーのDNS名をALIASレコードとして追加登録します。

サブドメイン名種別
_c6e0f05dd99166cf6b243429e7ab20a6CNAME_12d57b13acbe22819b26315e0d961a82.mhbtsbpdnt.acm-validations.aws
ALIASLB-fructos-2011a857894e06fb.elb.ap-northeast-1.amazonaws.com

EC2のセキュリティグループの設定

EC2メニューのインスタンスを開き、FRUCtoSを構築したEC2にチェックを入れて、セキュリティタブからセキュリティグループをクリックします。

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. 動作確認用クライアントのインストールと設定を参照してください。

HTTPS接続テスト

info

上記の出力が確認出来ない場合、Postmanの設定で「SSL certificate verification」がONになっていることを確認してください。

Postman設定確認