設定AS2組態 - AWS Transfer Family

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定AS2組態

本教學課程將逐步說明如何使用 設定適用性聲明 2 (AS2) 組態 AWS Transfer Family。完成此處所述的步驟後,您將擁有AS2啟用 的伺服器,已準備好接受來自範例交易合作夥伴AS2的訊息。您也會有一個連接器,可用來傳送訊息AS2給範例交易合作夥伴。

注意

範例設定的某些部分使用 AWS Command Line Interface (AWS CLI)。如果您尚未安裝 AWS CLI,請參閱 使用者指南 中的安裝或更新最新版本的 AWS CLIAWS Command Line Interface

  1. 為自己和交易合作夥伴建立憑證。如果您有可使用的現有憑證,可以略過本節。

    此程序會在 中說明步驟 1:為 建立憑證 AS2

  2. 建立使用AS2通訊協定的 AWS Transfer Family 伺服器。或者,您可以將彈性 IP 地址新增至伺服器,使其面向網際網路。

    此程序會在 中說明步驟 2:建立使用AS2通訊協定的 Transfer Family 伺服器

    注意

    您必須建立 Transfer Family 伺服器才能進行傳入傳輸。如果您只執行傳出傳輸,則不需要 Transfer Family 伺服器。

  3. 匯入您在步驟 1 中建立的憑證。

    此程序會在 中說明步驟 3:將憑證匯入為 Transfer Family 憑證資源

  4. 若要設定您的交易合作夥伴,請建立本機設定檔和合作夥伴設定檔。

    此程序會在 中說明步驟 4:為您和交易合作夥伴建立設定檔

  5. 建立您與您的交易合作夥伴之間的協議。

    此程序會在 中說明步驟 5:建立您與合作夥伴之間的協議

    注意

    您必須建立僅限傳入傳輸的協議。如果您只執行傳出傳輸,則不需要協議。

  6. 在您和您的交易合作夥伴之間建立連接器。

    此程序會在 中說明步驟 6:在您與您的合作夥伴之間建立連接器

    注意

    您必須建立僅限傳出傳輸的連接器。如果您只執行傳入傳輸,則不需要連接器。

  7. 測試AS2檔案交換。

    此程序會在 中說明步驟 7:AS2使用 Transfer Family 測試交換檔案

完成這些步驟後,您可以執行下列動作:

  • 使用 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 是您可以使用的一個選項。

若要產生範例憑證
重要

請勿將私有金鑰傳送給合作夥伴。在此範例中,您會為一方產生一組自我簽署的公有和私有金鑰。如果您要擔任兩個交易合作夥伴進行測試,您可以重複這些指示來產生兩組金鑰:每個交易合作夥伴一個金鑰。在此情況下,您不需要產生兩個根憑證授權機構 (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 國家代碼 組織所在國的雙字母代碼。
    ST 狀態、區域或省份 組織所在的州、區域或省。(在此情況下,區域不會參考您的 AWS 區域。)
    L Locality name (地區名稱) 組織所在的城市。
    O 組織名稱 組織的完整法定名稱,包括字尾,例如 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
    注意

    某些啟用 AS2的伺服器,例如 Open AS2,會要求您使用相同的憑證來簽署和加密。在此情況下,您可以匯入相同的私有金鑰和憑證,以達成這兩個目的。若要執行此命令,請執行此命令,而非先前的兩個命令:

    /usr/bin/openssl genrsa -out signing-and-encryption-key.pem 2048
  4. 執行下列命令,為要簽署的根金鑰建立憑證簽署請求 (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端點類型和具有AS2通訊協定的 Amazon S3 儲存體。

當您使用 create-server命令為 Transfer Family 建立AS2已啟用 的伺服器時,系統會自動為您建立VPC端點。此端點公開TCP連接埠 5080,以便接受AS2訊息。

如果您想要公開將VPC端點公開暴露至網際網路,您可以將彈性 IP 地址與VPC端點建立關聯。

若要使用這些指示,您需要下列項目:

  • 您的 ID VPC(例如 vpc-abcdef01)。

  • VPC 子網路IDs的 (例如子網路 abcdef01subnet-subnet-abcdef01子網路 021345ab)。

  • 一或多個IDs安全群組,允許來自交易合作夥伴的TCP連接埠 5080 傳入流量 (例如 sg-1234567890abcdef0sg-abcdef01234567890)。

  • (選用) 您要與VPC端點建立關聯的彈性 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端點。您只能透過 update-server操作將彈性 IP 地址連接至 Transfer Family 伺服器。下列命令會停止伺服器、使用彈性 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地址或透過公有端點存取 (如果您將彈性 IP 地址與端點建立關聯)。

    如果您的伺服器設定正確,連線將會成功。不過,由於您未傳送有效AS2訊息,因此會收到HTTP狀態碼 400 (錯誤請求) 回應。

    • 對於公有端點 (如果您在上一個步驟中與彈性 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,並連接 AWSTransferLoggingAccess 受管政策。如需詳細資訊,請參閱 建立IAM角色和政策。請注意您剛建立之IAM角色的 Amazon Resource Name (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命令。如果您使用相同的憑證進行加密和簽署,請匯入相同的憑證兩次 (一次使用 SIGNING ,另一次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協議

協議將兩個設定檔 (本機和合作夥伴)、其憑證和允許雙方之間傳入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、 和 FTPS 通訊協定相同FTP,可在 中使用建立IAM角色和政策

若要建立協議,您需要下列項目:

  • Amazon S3 儲存貯體名稱 (以及物件字首,如果指定的話)

  • 可存取儲存貯體ARNIAM的角色的

  • 您的 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連接器

您可以使用 StartFileTransferAPI操作,透過連接器將存放在 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:AS2使用 Transfer Family 測試交換檔案

從交易合作夥伴接收檔案

如果您將公有彈性 IP 地址與VPC端點建立關聯,Transfer Family 會自動建立包含公有 IP 地址DNS的名稱。子網域是您的 AWS Transfer Family 伺服器 ID (格式為 s-1234567890abcdef0)。以下列格式將伺服器URL提供給交易合作夥伴。

http://s-1234567890abcdef0.server.transfer.us-east-1.amazonaws.com:5080

如果您沒有將公有彈性 IP 地址與VPC端點建立關聯,請查詢端點的主機名稱,該VPC端點可以接受連接埠 5080 上HTTPPOST交易合作夥伴AS2的訊息。若要擷取VPC端點詳細資訊,請使用下列命令。

aws transfer describe-server --server-id s-1234567890abcdef0

例如,假設上述命令傳回 的VPC端點 IDvpce-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

在此範例中,成功的傳輸會儲存在您在 中指定的base-directory參數中指定的位置步驟 5:建立您與合作夥伴之間的協議。如果我們成功接收名為 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,參考連接器 ID 和檔案路徑來AS2傳送訊息,如下列 start-file-transfer AWS Command Line Interface (AWS CLI) 命令所示:

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 Resource Names (ARNs)。

若要傳回特定連接器的屬性,請使用您要使用的 ID 執行下列命令:

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

describe-connector 命令會傳回連接器的所有屬性,包括其 URL、角色、設定檔、訊息處置通知 (MDNs)、標籤和監控指標。

您可以檢視 JSON和 檔案,確認合作夥伴已成功收到MDN檔案。這些檔案是根據中所述的慣例命名檔案名稱和位置。如果您在建立連接器時設定了記錄角色,您也可以檢查 CloudWatch 日誌是否有AS2訊息的狀態。