翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AS2 設定のセットアップ
このチュートリアルでは、 で適用性ステートメント 2 (AS2) 設定を設定する方法について説明します AWS Transfer Family。ここで説明する手順を完了すると、AS2 対応サーバーが完成し、サンプルの取引相手からの AS2 メッセージを受け入れる準備が整います。また、サンプルの取引相手に AS2 メッセージを送信するために使用できるコネクタもあります。
注記
サンプルセットアップの一部では、 AWS Command Line Interface () を使用しますAWS CLI。をまだインストールしていない場合は AWS CLI、「 AWS Command Line Interface ユーザーガイド」の「 の最新バージョンのインストールまたは更新 AWS CLI」を参照してください。
-
自分用と取引相手用の証明書を作成します。使用できる既存の証明書がある場合は、このセクションをスキップできます。
このプロセスは、「ステップ 1: AS2 の証明書を作成する」で説明されています。
-
AS2 プロトコルを使用する AWS Transfer Family サーバーを作成します。オプションで、サーバーに Elastic IP アドレスを追加してインターネットに接続できるようにすることもできます。
このプロセスは、「ステップ 2: AS2 プロトコルを使用する Transfer Family サーバーを作成する」で説明されています。
注記
Transfer Family サーバーは、インバウンド転送専用に作成する必要があります。アウトバウンド転送のみを行う場合は、Transfer Family サーバーは必要ありません。
-
ステップ 1 で作成した証明書をインポートします。
このプロセスは、「ステップ 3: 証明書を Transfer Family 証明書リソースとしてインポートする」で説明されています。
-
取引相手を設定するには、ローカルプロファイルとパートナープロファイルを作成します。
このプロセスは、「ステップ 4: 自分と取引相手のプロフィールを作成する」で説明されています。
-
自分と取引相手との間で契約を作成してください。
このプロセスは、「ステップ 5: 自分とパートナーとの間で契約を作成する」で説明されています。
注記
契約を作成する必要があるのはインバウンド転送の場合のみです。アウトバウンド転送のみを行う場合は、契約は必要ありません。
-
自分と取引相手との間でコネクタを作成してください。
このプロセスは、「ステップ 6: 自分とパートナーとの間でコネクタを作成する」で説明されています。
注記
コネクタはアウトバウンド転送専用に作成する必要があります。インバウンド転送のみを行う場合は、コネクタは必要ありません。
-
AS2 ファイル交換をテストします。
このプロセスは、「ステップ 7: Transfer Family を使用して AS2 経由でのファイル交換をテストする」で説明されています。
このステップを完了したら、以下を実行できます。
-
Transfer Family
start-file-transfer
AWS Command Line Interface (AWS CLI) コマンドを使用して、リモート AS2-enabledパートナーサーバーにファイルを送信します。 -
仮想プライベートクラウド (VPC) エンドポイントを介して、ポート 5080 にあるリモート AS2 対応パートナーサーバーからファイルを受信します。
ステップ 1: AS2 の証明書を作成する
AS2 交換の両当事者には X.509 証明書が必要です。これらの証明書は好きな方法で作成できます。このトピックでは、コマンドラインから OpenSSL
注記
AS2 証明書のキー長は 2048 ビット以上、最大で 4096 ビットでなければなりません。
パートナーとファイルを転送する場合は、次の点に注意してください。
-
証明書はプロファイルに添付できます。証明書にはパブリックキーまたはプライベートキーが含まれます。
-
取引相手がパブリックキーを送り、自分のパブリックキーを彼らに送ります。
-
取引相手はパブリックキーでメッセージを暗号化し、プライベートキーで署名します。逆に、パートナーのパブリックキーでメッセージを暗号化し、自分のプライベートキーで署名します。
注記
キーを GUI で管理したい場合に使用できるオプションの 1 つは Portecle
です。
証明書の例を生成するには
重要
パートナーにプライベートキーを送らないでください。この例では、一方の当事者用に自己署名パブリックキーとプライベートキーのセットを生成します。テスト目的で両方の取引相手として行動する場合は、これらの手順を繰り返して、取引相手ごとに 1 つずつ、合計 2 つのキーセットを生成できます。この場合、ルート認証機関 (CA) を 2 つ生成する必要はありません。
-
次のコマンドを実行して、2048 ビット長のモジュラスで RSA プライベートキーを生成します。
/usr/bin/openssl genrsa -out root-ca-key.pem 2048
-
次のコマンドを実行して、
root-ca-key.pem
ファイルを使用して自己署名証明書を作成します。/usr/bin/openssl req \ -x509 -new -nodes -sha256 \ -days 1825 \ -subj "/C=
US
/ST=MA
/L=Boston
/O=TransferFamilyCustomer
/OU=IT-dept
/CN=ROOTCA" \ -key root-ca-key.pem \ -out root-ca.pem-subj
引数は、次の値で構成されます。名前 説明 C
国コード 組織が所在する国を表す 2 文字のコード。 ST
州、地域、または都道府県 あなたが所属する組織の所在地の州または県。(この場合、リージョンは AWS リージョンを参照しません。) L
市区町村 あなたが所属する組織の所在地の市区町村。 O
[Organization name] (組織名) LLC、Corp などのサフィックスを含む、組織の正式名称です。 OU
部門名 この証明書を扱う組織内の部門。 CN
共通名または完全修飾ドメイン名 (FQDN) このケースでは、ルート証明書を作成するので、値は ROOTCA
です。これらの例では、CN
を使用して証明書の目的を説明しています。 -
ローカルプロファイル用の署名キーと暗号化キーを作成します。
/usr/bin/openssl genrsa -out signing-key.pem 2048 /usr/bin/openssl genrsa -out encryption-key.pem 2048
注記
OpenAS2 など、一部の AS2 対応サーバーでは、署名と暗号化の両方に同じ証明書を使用する必要があります。この場合、両方の目的で同じプライベートキーと証明書をインポートできます。そのためには、前の 2 つのコマンドの代わりに次のコマンドを実行します。
/usr/bin/openssl genrsa -out signing-and-encryption-key.pem 2048
-
次のコマンドを実行して、ルートキーに署名する証明書署名リクエスト (CSR) を作成します。
/usr/bin/openssl req -new -key signing-key.pem -subj \ "/C=
US
/ST=MA
/L=Boston
/O=TransferFamilyCustomer
/OU=IT-dept
/CN=Signer" -out signing-key-csr.pem/usr/bin/openssl req -new -key encryption-key.pem -subj \ "/C=
US
/ST=MA
/L=Boston
/O=TransferFamilyCustomer
/OU=IT-dept
/CN=Encrypter" -out encryption-key-csr.pem -
次に、
signing-cert.conf
ファイルとencryption-cert.conf
ファイルを作成する必要があります。-
テキストエディタを使用して、
signing-cert.conf
ファイルを作成し、次の内容を記述します。authorityKeyIdentifier=keyid,issuer keyUsage = digitalSignature, nonRepudiation
-
テキストエディタを使用して、
encryption-cert.conf
ファイルを作成し、次の内容を記述します。authorityKeyIdentifier=keyid,issuer keyUsage = dataEncipherment
-
-
最後に、以下のコマンドを実行して署名付き証明書を作成します。
/usr/bin/openssl x509 -req -sha256 -CAcreateserial -days 1825 -in signing-key-csr.pem -out signing-cert.pem -CA \ root-ca.pem -CAkey root-ca-key.pem -extfile signing-cert.conf
/usr/bin/openssl x509 -req -sha256 -CAcreateserial -days 1825 -in encryption-key-csr.pem -out encryption-cert.pem \ -CA root-ca.pem -CAkey root-ca-key.pem -extfile encryption-cert.conf
ステップ 2: AS2 プロトコルを使用する Transfer Family サーバーを作成する
この手順では、Transfer Family AWS CLIを使用して AS2 対応サーバーを作成する方法について説明します。
注記
サンプルステップの多くは、ファイルからパラメータを読み込むコマンドを使用しています。ファイルを使用してパラメータを読み込む方法について詳しくは、「ファイルからパラメータをロードする方法」を参照してください。
代わりにコンソールを使用する場合は、「Transfer Family コンソールを使用して AS2 サーバーを作成する」を参照してください。
SFTP または FTPS AWS Transfer Family サーバーの作成方法と同様に、 create-server
AWS CLI コマンドの --protocols AS2
パラメータを使用して AS2-enabledサーバーを作成します。現在、Transfer Family は VPC エンドポイントタイプと AS2 プロトコルの Amazon S3 ストレージのみをサポートしています。
create-server
コマンドを使用して Transfer Family 用の AS2 対応サーバーを作成すると、VPC エンドポイントが自動的に作成されます。このエンドポイントは TCP ポート 5080 を公開し、AS2 メッセージを受け付けることができるようにします。
VPC エンドポイントをインターネット向けに公開する場合、Elastic IP アドレスを VPC エンドポイントに関連付けることができます。
この指示書を使用するには、次が必要です。
-
VPC の ID (例えば vpc-abcdef01)。
-
VPC サブネットの IDs (例: subnet-abcdef01、subnet-subnet-abcdef01、subnet-021345ab)。
-
取引相手からの TCP ポート 5080 への着信トラフィックを許可するセキュリティグループの 1 つ以上の ID (例えば、sg-1234567890abcdef0 と sg-abcdef01234567890)。
-
(オプション) VPC エンドポイントに関連付けたい Elastic IP アドレス。
-
取引相手が VPN 経由で VPC に接続されていない場合は、インターネットゲートウェイが必要です。詳細については、「Amazon VPC ユーザーガイド」の「インターネットゲートウェイを使用してインターネットに接続する」 を参照してください。
AS2 対応サーバーを作成するには
-
以下のコマンドを実行します。
を、ユーザー自身の情報に置き換えます。user input placeholder
aws transfer create-server --endpoint-type VPC \ --endpoint-details VpcId=
vpc-abcdef01
,SubnetIds=subnet-abcdef01
,subnet-abcdef01
,subnet- 021345ab
,SecurityGroupIds=sg-abcdef01234567890
,sg-1234567890abcdef0
--protocols AS2 \ --protocol-details As2Transports=HTTP -
(オプション) VPC エンドポイントをパブリックにすることができます。Elastic IP アドレスは、
update-server
オペレーションを通じてのみ Transfer Family サーバーにアタッチできます。以下のコマンドはサーバーを停止し、Elastic IP アドレスで更新してから再起動します。aws transfer stop-server --server-id
your-server-id
aws transfer update-server --server-id
your-server-id
--endpoint-details \ AddressAllocationIds=eipalloc-abcdef01234567890
,eipalloc-1234567890abcdef0
,eipalloc-abcd012345ccccccc
aws transfer start-server --server-id
your-server-id
start-server
コマンドは、サーバーのパブリック IP アドレスを含む DNS レコードを自動的に作成します。取引相手にサーバーへのアクセスを許可するには、次の情報を提供します。この場合、
は AWS リージョンのことを指します。your-region
s-
your-server-id
.server.transfer.your-region
.amazonaws.com取引相手に提供する完全な URL は次のとおりです。
http://s-
your-server-id
.server.transfer.your-region
.amazonaws.com:5080 -
AS2 対応サーバーにアクセスできるかどうかをテストするには、以下のコマンドを使用します。VPC エンドポイントのプライベート DNS アドレスまたはパブリックエンドポイント (エンドポイントに Elastic IP アドレスを関連付けている場合) からサーバーにアクセスできることを確認します。
サーバーが正しく設定されていれば、接続は成功します。ただし、有効な AS2 メッセージを送信していないため、HTTP ステータスコード 400 (Bad Request) のレスポンスが返されます。
-
パブリックエンドポイント (前のステップで Elastic IP アドレスを関連付けた場合) では、サーバー ID とリージョンを代入して以下のコマンドを実行します。
curl -vv -X POST http://s-
your-server-id
.transfer.your-region
.amazonaws.com:5080 -
VPC 内で接続している場合は、次のコマンドを実行して VPC エンドポイントのプライベート DNS 名を検索します。
aws transfer describe-server --server-id s-
your-server-id
describe-server
コマンドは、VPC エンドポイント ID をVpcEndpointId
パラメータに返します。次のコマンドを実行するには、この値を使用します。aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-
your-vpc-endpoint-id
describe-vpc-endpoints
コマンドは、複数のDnsName
パラメータを含むDNSEntries
配列を返します。以下のコマンドでは、リージョン DNS 名 (アベイラビリティーゾーンを含まないもの) を使用します。curl -vv -X POST http://vpce-
your-vpce
.vpce-svc-your-vpce-svc
.your-region
.vpce.amazonaws.com:5080例えば、次のコマンドでは、前のコマンドのプレースホルダーのサンプル値が表示されます。
curl -vv -X POST http://vpce-0123456789abcdefg-fghij123.vpce-svc-11111aaaa2222bbbb.us-east-1.vpce.amazonaws.com:5080
-
-
(オプション) ロギングロールを設定します。Transfer Family は、送受信されたメッセージのステータスを構造化された JSON 形式で Amazon CloudWatch ログに記録します。Transfer Family にアカウントの CloudWatch ログへのアクセスを提供するには、サーバーでログ記録ロールを設定する必要があります。
を信頼する AWS Identity and Access Management (IAM) ロールを作成し
transfer.amazonaws.com
、AWSTransferLoggingAccess
マネージドポリシーをアタッチします。詳細については、「IAM ポリシーとロールを作成する」を参照してください。先ほど作成した IAM ロールの Amazon リソースネーム (ARN) を書き留め、次のupdate-server
コマンドを実行して、サーバーに関連付けます。aws transfer update-server --server-id
your-server-id
--logging-role arn:aws:iam::your-account-id
:role/logging-role-name
注記
ログ記録ロールはオプションですが、メッセージのステータスを確認したり、設定上の問題をトラブルシューティングしたりできるように設定することを強くお勧めします。
ステップ 3: 証明書を Transfer Family 証明書リソースとしてインポートする
この手順では、 AWS CLIを使用して証明書をインポートする方法について説明します。代わりに Transfer Family コンソールを使用する場合は、AS2 証明書のインポート を参照してください。
ステップ 1 で作成した署名用証明書と暗号化証明書をインポートするには、次の import-certificate
コマンドを実行します。暗号化と署名に同じ証明書を使用している場合は、同じ証明書を 2 回インポートします (1 回目は SIGNING
用、もう 1 回は ENCRYPTION
用)。
aws transfer import-certificate --usage SIGNING --certificate file://signing-cert.pem \ --private-key file://signing-key.pem --certificate-chain file://root-ca.pem
このコマンドは署名の CertificateId
を返します。次のセクションでは、この証明書 ID を
と呼びます。my-signing-cert-id
aws transfer import-certificate --usage ENCRYPTION --certificate file://encryption-cert.pem \ --private-key file://encryption-key.pem --certificate-chain file://root-ca.pem
このコマンドは暗号化 CertificateId
を返します。次のセクションでは、この証明書 ID を
と呼びます。my-encrypt-cert-id
次に、次のコマンドを実行して、パートナーの暗号化証明書と署名用証明書をインポートします。
aws transfer import-certificate --usage ENCRYPTION --certificate file://
partner-encryption-cert
.pem \ --certificate-chain file://partner-root-ca
.pem
このコマンドはパートナーの暗号化 CertificateId
を返します。次のセクションでは、この証明書 ID を
と呼びます。partner-encrypt-cert-id
aws transfer import-certificate --usage SIGNING --certificate file://
partner-signing-cert
.pem \ --certificate-chain file://partner-root-ca
.pem
このコマンドはパートナーの署名 CertificateId
を返します。次のセクションでは、この証明書 ID を
と呼びます。partner-signing-cert-id
ステップ 4: 自分と取引相手のプロフィールを作成する
この手順では、 を使用して AS2 プロファイルを作成する方法について説明します AWS CLI。代わりに Transfer Family コンソールを使用する場合は、AS2 プロファイルの作成 を参照してください。
次のコマンドを実行してローカル AS2 プロファイルを作成します。このコマンドは、パブリックキーとプライベートキーを含む証明書を参照します。
aws transfer create-profile --as2-id
MYCORP
--profile-type LOCAL --certificate-ids \my-signing-cert-id
my-encrypt-cert-id
このコマンドはプロファイル ID を返します。次のセクションでは、この ID を
と呼びます。my-profile-id
次のコマンドを実行して、パートナープロファイルを作成します。このコマンドは、パートナーのパブリックキー証明書のみを使用します。このコマンドを使用するには、
を自身の情報 (パートナーの AS2 名や証明書 ID など) に置き換えます。user input placeholders
aws transfer create-profile --as2-id
PARTNER-COMPANY
--profile-type PARTNER --certificate-ids \partner-signing-cert-id
partner-encrypt-cert-id
このコマンドはパートナーのプロファイル ID を返します。次のセクションでは、この ID を
と呼びます。partner-profile-id
注記
前のコマンドでは、MYCORP
を自分の組織の名前に置き換え、PARTNER-COMPANY
を取引相手の組織の名前に置き換えます。
ステップ 5: 自分とパートナーとの間で契約を作成する
ここでは、 AWS CLIを使用して AS2 契約を作成する方法を説明します。代わりに Transfer Family コンソールを使用する場合は、AS2 契約の作成 を参照してください。
契約には、2 つのプロファイル (ローカルとパートナー)、それらの証明書、および両者間のインバウンド AS2 転送を可能にするサーバー設定がまとめられています。次のコマンドを実行すると、項目を一覧表示できます。
aws transfer list-profiles --profile-type LOCAL aws transfer list-profiles --profile-type PARTNER aws transfer list-servers
このステップには、バケットへの、およびバケットからの読み取り/書き込みアクセス権限を持つ Amazon S3 バケットと IAM ロールが必要です。このロールを作成する手順は、Transfer Family の SFTP、FTP、FTPS プロトコルの場合と同じで、IAM ポリシーとロールを作成する に記載されています。
契約を作成するには、次のアイテムが必要です。
-
Amazon S3 バケット名 (指定されている場合はオブジェクトプレフィックスも)
-
バケットへのアクセス権を持つ IAM ロールの ARN
-
Transfer Family サーバー ID
-
プロファイル ID とパートナーのプロファイル ID
次のコマンドを実行して契約を作成します。
aws transfer create-agreement --description "
ExampleAgreementName
" --server-idyour-server-id
\ --local-profile-idyour-profile-id
--partner-profile-idyour-partner-profile-id
--base-directory /DOC-EXAMPLE-DESTINATION-BUCKET/AS2-inbox
\ --access-role arn:aws:iam::111111111111
:role/TransferAS2AccessRole
成功した場合、このコマンドは契約の ID を返します。その後、次のコマンドを使用して契約の詳細を表示できます。
aws transfer describe-agreement --agreement-id
agreement-id
--server-idyour-server-id
ステップ 6: 自分とパートナーとの間でコネクタを作成する
ここでは、 AWS CLIを使用して AS2 コネクタを作成する方法を説明します。代わりに Transfer Family コンソールを使用する場合は、AS2 コネクタを設定する を参照してください。
StartFileTransfer
API オペレーションを使用して、Amazon S3 に保存されているファイルをコネクタを使用して取引相手の AS2 エンドポイントに送信できます。次のコマンドを実行すると、先ほど作成したプロファイルを見つけることができます。
aws transfer list-profiles
コネクタを作成するときは、パートナーの AS2 サーバー URL を指定する必要があります。次の テキストを testAS2Config.json
という名前のファイルにコピーします。
{ "Compression": "ZLIB", "EncryptionAlgorithm": "AES256_CBC", "LocalProfileId": "
your-profile-id
", "MdnResponse": "SYNC", "MdnSigningAlgorithm": "DEFAULT", "MessageSubject": "Your Message Subject
", "PartnerProfileId": "partner-profile-id
", "SigningAlgorithm": "SHA256" }
注記
ではEncryptionAlgorithm
、アルゴリズムは弱い暗号化DES_EDE3_CBC
アルゴリズムであるため、それを必要とするレガシークライアントをサポートする必要がある場合を除き、アルゴリズムを指定しないでください。
その後、次のコマンドを実行してコネクタを作成します。
aws transfer create-connector --url "http://
partner-as2-server-url
" \ --access-roleyour-IAM-role-for-bucket-access
\ --logging-role arn:aws:iam::your-account-id
:role/service-role/AWSTransferLoggingAccess \ --as2-config file:///path/to
/testAS2Config.json
ステップ 7: Transfer Family を使用して AS2 経由でのファイル交換をテストする
取引相手からファイルを受け取ります
パブリック Elastic IP アドレスを VPC エンドポイントに関連付けた場合、Transfer Family はパブリック IP アドレスを含む DNS 名を自動的に作成します。サブドメインは AWS Transfer Family 、サーバー ID (形式 ) ですs-1234567890abcdef0
。以下の形式で、取引相手にサーバー URL を提供します。
http://s-
1234567890abcdef0
.server.transfer.us-east-1
.amazonaws.com:5080
パブリック Elastic IP アドレスを VPC エンドポイントに関連付けていない場合は、ポート 5080 で取引相手からの HTTP POST 経由で AS2 メッセージを受け付ける VPC エンドポイントのホスト名を検索します。VPC エンドポイントの詳細情報を取得するには、次のコマンドを使用します。
aws transfer describe-server --server-id s-
1234567890abcdef0
例えば、前のコマンドが VPC エンドポイント ID を vpce-1234abcd5678efghi
と返すとします。次に、次のコマンドを使用して DNS 名を取得します。
aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-1234abcd5678efghi
このコマンドは、次のコマンドを実行するために必要な VPC エンドポイントのすべての詳細を返します。
DNS 名は DnsEntries
配列に一覧表示されます。VPC エンドポイントにアクセスするには、取引相手が VPC 内にいる必要があります (例えば、 AWS PrivateLink または VPN 経由)。以下の形式で、パートナーに VPC エンドポイント URL を提供します。
http://vpce-
your-vpce-id
.vpce-svc-your-vpce-svc-id
.your-region
.vpce.amazonaws.com:5080
例えば、次の URL では、前のコマンドのプレースホルダーのサンプル値が表示されます。
http://vpce-0123456789abcdefg-fghij123.vpce-svc-11111aaaa2222bbbb.us-east-1.vpce.amazonaws.com:5080
この例では、成功した転送は、ステップ 5: 自分とパートナーとの間で契約を作成する で指定した base-directory
パラメータで指定された場所に保存されます。myfile1.txt
および myfile2.txt
という名前のファイルを正常に受信すると、ファイルは /
として保存されます。ここでは、ファイルは path-defined-in-the-agreement
/processed/original_filename.messageId.original_extension
/DOC-EXAMPLE-DESTINATION-BUCKET/AS2-inbox/processed/myfile1.
と messageId
.txt/DOC-EXAMPLE-DESTINATION-BUCKET/AS2-inbox/processed/myfile2.
として保存されます。messageId
.txt
Transfer Family サーバーの作成時にログ記録ロールを設定した場合は、 CloudWatch ログで AS2 メッセージのステータスを確認することもできます。
取引相手にファイルを送信します
Transfer Family を使用して AS2 メッセージを送信するには、次の start-file-transfer
AWS Command Line Interface (AWS CLI) コマンドに示すように、コネクタ ID とファイルへのパスを参照します。
aws transfer start-file-transfer --connector-id c-
1234567890abcdef0
\ --send-file-paths "/DOC-EXAMPLE-SOURCE-BUCKET/myfile1.txt
" "/DOC-EXAMPLE-SOURCE-BUCKET/myfile2.txt
"
コネクタの詳細情報を取得するには、次のコマンドを実行しする:
aws transfer list-connectors
list-connectors
コマンドは、コネクタのコネクタ ID、URL、Amazon リソースネーム (ARN) を返します。
特定のコネクタのプロパティを返すには、使用する ID を指定して以下のコマンドを実行します。
aws transfer describe-connector --connector-id
your-connector-id
describe-connector
コマンドは、URL、ロール、プロファイル、メッセージ処理通知 (MDN)、タグ、モニタリングメトリックなど、コネクタのすべてのプロパティを返します。
JSON と MDN ファイルを表示すると、パートナーがファイルを正常に受信したことを確認できます。これらのファイルには、ファイル名と場所 で説明されている規則に従って名前が付けられます。コネクタの作成時にログ記録ロールを設定した場合は、 CloudWatch ログで AS2 メッセージのステータスを確認することもできます。