AS2 設定の設定 - AWS Transfer Family

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AS2 設定の設定

このチュートリアルでは、 で Applicability Statement 2 (AS2) 設定を設定する方法について説明します AWS Transfer Family。ここで説明するステップを完了すると、サンプル取引パートナーからのAS2メッセージを受け入れる準備ができた AS2対応サーバーが完成します。また、サンプル取引先にAS2メッセージを送信するために使用できるコネクタもあります。

注記

サンプルセットアップの一部では、 AWS Command Line Interface () を使用しますAWS CLI。をまだインストールしていない場合は AWS CLI、AWS Command Line Interface 「 ユーザーガイド」の「 の最新バージョンのインストールまたは更新 AWS CLI」を参照してください。

  1. 自分用と取引相手用の証明書を作成します。使用できる既存の証明書がある場合は、このセクションをスキップできます。

    このプロセスは、「ステップ 1: の証明書を作成する AS2」で説明されています。

  2. AS2 プロトコルを使用する AWS Transfer Family サーバーを作成します。オプションで、サーバーに Elastic IP アドレスを追加してインターネットに接続できるようにすることもできます。

    このプロセスは、「ステップ 2: AS2プロトコルを使用する Transfer Family サーバーを作成する」で説明されています。

    注記

    Transfer Family サーバーは、インバウンド転送専用に作成する必要があります。アウトバウンド転送のみを行う場合は、Transfer Family サーバーは必要ありません。

  3. ステップ 1 で作成した証明書をインポートします。

    このプロセスは、「ステップ 3: 証明書を Transfer Family 証明書リソースとしてインポートする」で説明されています。

  4. 取引相手を設定するには、ローカルプロファイルとパートナープロファイルを作成します。

    このプロセスは、「ステップ 4: 自分と取引相手のプロフィールを作成する」で説明されています。

  5. 自分と取引相手との間で契約を作成してください。

    このプロセスは、「ステップ 5: 自分とパートナーとの間で契約を作成する」で説明されています。

    注記

    契約を作成する必要があるのはインバウンド転送の場合のみです。アウトバウンド転送のみを行う場合は、契約は必要ありません。

  6. 自分と取引相手との間でコネクタを作成してください。

    このプロセスは、「ステップ 6: 自分とパートナーとの間でコネクタを作成する」で説明されています。

    注記

    コネクタはアウトバウンド転送専用に作成する必要があります。インバウンド転送のみを行う場合は、コネクタは必要ありません。

  7. AS2 ファイル交換をテストします。

    このプロセスは、「ステップ 7: Transfer Family を使用してファイル交換AS2をテストする」で説明されています。

このステップを完了したら、以下を実行できます。

  • Transfer Family start-file-transfer AWS Command Line Interface (AWS CLI) コマンドを使用して、リモートAS2で有効なパートナーサーバーにファイルを送信します。

  • 仮想プライベートクラウド (VPC) エンドポイントを介して、ポート 5080 のリモートAS2対応パートナーサーバーからファイルを受信します。

ステップ 1: の証明書を作成する AS2

AS2 交換のどちらの当事者にも X.509 証明書が必要です。これらの証明書は好きな方法で作成できます。このトピックでは、コマンドラインから OpenSSL を使用してルート証明書を作成し、下位証明書に署名する方法について説明します。両当事者はそれぞれ独自の証明書を生成する必要があります。

注記

AS2 証明書のキー長は、少なくとも 2048 ビット、最大 4096 ビットである必要があります。

パートナーとファイルを転送する場合は、次の点に注意してください。

  • 証明書はプロファイルに添付できます。証明書にはパブリックキーまたはプライベートキーが含まれます。

  • 取引相手がパブリックキーを送り、自分のパブリックキーを彼らに送ります。

  • 取引相手はパブリックキーでメッセージを暗号化し、プライベートキーで署名します。逆に、パートナーのパブリックキーでメッセージを暗号化し、自分のプライベートキーで署名します。

    注記

    でキーを管理する場合はGUI、 Portecle は、使用できる 1 つのオプションです。

証明書の例を生成するには
重要

パートナーにプライベートキーを送らないでください。この例では、一方の当事者用に自己署名パブリックキーとプライベートキーのセットを生成します。テスト目的で両方の取引相手として行動する場合は、これらの手順を繰り返して、取引相手ごとに 1 つずつ、合計 2 つのキーセットを生成できます。この場合、2 つのルート認証局 () を生成する必要はありませんCAs。

  1. 次のコマンドを実行して、2048 ビット長のモジュラスを持つRSAプライベートキーを生成します。

    /usr/bin/openssl genrsa -out root-ca-key.pem 2048
  2. 次のコマンドを実行して、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 を使用して証明書の目的を説明しています。
  3. ローカルプロファイル用の署名キーと暗号化キーを作成します。

    /usr/bin/openssl genrsa -out signing-key.pem 2048 /usr/bin/openssl genrsa -out encryption-key.pem 2048
    注記

    Open などの一部の AS2対応サーバーではAS2、署名と暗号化の両方に同じ証明書を使用する必要があります。この場合、両方の目的で同じプライベートキーと証明書をインポートできます。そのためには、前の 2 つのコマンドの代わりに次のコマンドを実行します。

    /usr/bin/openssl genrsa -out signing-and-encryption-key.pem 2048
  4. 次のコマンドを実行して、署名するルートキーの Certificate Signing Requests (CSRs) を作成します。

    /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
  5. 次に、signing-cert.conf ファイルと encryption-cert.conf ファイルを作成する必要があります。

    • テキストエディタを使用して、signing-cert.conf ファイルを作成し、次の内容を記述します。

      authorityKeyIdentifier=keyid,issuer keyUsage = digitalSignature, nonRepudiation
    • テキストエディタを使用して、encryption-cert.conf ファイルを作成し、次の内容を記述します。

      authorityKeyIdentifier=keyid,issuer keyUsage = dataEncipherment
  6. 最後に、以下のコマンドを実行して署名付き証明書を作成します。

    /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 を使用して AS2対応サーバーを作成する方法について説明します AWS CLI。

注記

サンプルステップの多くは、ファイルからパラメータを読み込むコマンドを使用しています。ファイルを使用してパラメータを読み込む方法について詳しくは、「ファイルからパラメータをロードする方法」を参照してください。

代わりにコンソールを使用する場合は、「Transfer Family コンソールを使用してAS2サーバーを作成する」を参照してください。

SFTP または FTPS AWS Transfer Family サーバーを作成する方法と同様に、 create-server AWS CLI コマンドの --protocols AS2パラメータを使用して AS2対応サーバーを作成します。現在、Transfer Family はVPC、エンドポイントタイプと Amazon S3 ストレージのみをAS2プロトコルでサポートしています。

create-server コマンドを使用して Transfer Family 用の AS2対応サーバーを作成すると、VPCエンドポイントが自動的に作成されます。このエンドポイントは、AS2メッセージを受け入れることができるようにTCPポート 5080 を公開します。

VPC エンドポイントをインターネットに公開する場合は、Elastic IP アドレスをVPCエンドポイントに関連付けることができます。

この指示書を使用するには、次が必要です。

  • の ID VPC (vpc-abcdef01 など)。

  • VPC サブネットIDsの (例えば、subnet-abcdef01subnet-subnet-abcdef01subnet-021345ab など)。

  • 取引相手からのTCPポート 5080 での受信トラフィックを許可する 1 つ以上のIDsセキュリティグループ (例: sg-1234567890abcdef0 および sg-abcdef01234567890)。

  • (オプション) VPCエンドポイントに関連付ける Elastic IP アドレス。

  • 取引先が VPC経由で に接続されていない場合はVPN、インターネットゲートウェイが必要です。詳細については、「Amazon VPCユーザーガイド」の「インターネットゲートウェイを使用してインターネットに接続する」を参照してください。

AS2対応サーバーを作成するには
  1. 以下のコマンドを実行します。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
  2. (オプション) 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レコードを自動的に作成します。取引相手にサーバーへのアクセスを許可するには、次の情報を提供します。この場合、your-region は AWS リージョンのことを指します。

    s-your-server-id.server.transfer.your-region.amazonaws.com

    取引相手URLに提供する のは、次のとおりです。

    http://s-your-server-id.server.transfer.your-region.amazonaws.com:5080

  3. 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コマンドは、 VpcEndpointIdパラメータでVPCエンドポイント ID を返します。次のコマンドを実行するには、この値を使用します。

      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
  4. (オプション) ロギングロールを設定します。Transfer Family は、構造化されたJSON形式で送受信されたメッセージのステータスを Amazon CloudWatch ログに記録します。Transfer Family にアカウントの CloudWatch ログへのアクセスを許可するには、サーバーでログ記録ロールを設定する必要があります。

    を信頼する AWS Identity and Access Management (IAM) ロールを作成しtransfer.amazonaws.com.rproxy.goskope.comAWSTransferLoggingAccess マネージドポリシーをアタッチします。詳細については、「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 と呼びます。

次のコマンドを実行して、パートナープロファイルを作成します。このコマンドは、パートナーのパブリックキー証明書のみを使用します。このコマンドを使用するには、 user input placeholdersをパートナーAS2の名前や証明書 など、独自の情報に置き換えますIDs。

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: 自分とパートナーとの間で契約を作成する

この手順では、 を使用してAS2アグリーメントを作成する方法について説明します AWS CLI。代わりに Transfer Family コンソールを使用する場合は、AS2 アグリーメントの作成 を参照してください。

アグリーメントには、2 つのプロファイル (ローカルとパートナー)、その証明書、および 2 つの当事者間のインバウンドAS2転送を許可するサーバー設定がまとめられています。次のコマンドを実行すると、項目を一覧表示できます。

aws transfer list-profiles --profile-type LOCAL aws transfer list-profiles --profile-type PARTNER aws transfer list-servers

このステップには、バケットとの間で読み取り/書き込みアクセスが可能な Amazon S3 バケットとIAMロールが必要です。このロールを作成する手順はSFTP、Transfer Family 、、および FTPSプロトコルの場合と同じでありFTP、 で利用できますIAM ロールとポリシーを作成する

契約を作成するには、次のアイテムが必要です。

  • Amazon S3 バケット名 (指定されている場合はオブジェクトプレフィックスも)

  • バケットにアクセスできるIAMロールARNの 。

  • Transfer Family サーバー ID

  • プロファイル ID とパートナーのプロファイル ID

次のコマンドを実行して契約を作成します。

aws transfer create-agreement --description "ExampleAgreementName" --server-id your-server-id \ --local-profile-id your-profile-id --partner-profile-id your-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-id your-server-id

ステップ 6: 自分とパートナーとの間でコネクタを作成する

この手順では、 を使用してAS2コネクタを作成する方法について説明します AWS CLI。代わりに 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-role your-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 の取引先HTTPPOSTからの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 コマンドは、コネクタのコネクタ IDs、URLs、および Amazon リソースネーム (ARNs) を返します。

特定のコネクタのプロパティを返すには、使用する ID を指定して以下のコマンドを実行します。

aws transfer describe-connector --connector-id your-connector-id

describe-connector コマンドは、、ロール、プロファイルURL、メッセージ処理通知 (MDNs)、タグ、モニタリングメトリクスなど、コネクタのすべてのプロパティを返します。

パートナーが正常にファイルを受け取ったことを確認するには、 JSONおよび MDN ファイルを表示します。これらのファイルには、ファイル名と場所 で説明されている規則に従って名前が付けられます。コネクタの作成時にログ記録ロールを設定した場合は、 CloudWatch ログにAS2メッセージのステータスを確認することもできます。