本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
设置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 服务器。或者,您可以向服务器添加弹性 IP 地址,使其面向互联网。
步骤 2:创建使用该AS2协议的 Transfer Family 服务器 中介绍了此过程。
注意
您必须仅为入站传输创建 Transfer Family 服务器。如果您只执行出站传输,则不需要 Transfer Family 服务器。
-
导入已在第 1 步中创建的证书。
第 3 步:将证书作为 Transfer Family 证书资源导入 中介绍了此过程。
-
要设置您的交易伙伴,请创建本地配置文件和合作伙伴配置文件。
第 4 步:为您和您的交易伙伴创建配置文件 中介绍了此过程。
-
在您和您的交易伙伴之间创建协议。
第 5 步:创建您与合作伙伴之间的协议 中介绍了此过程。
注意
您必须仅为入站传输创建协议。如果您只执行出站传输,则无需协议。
-
在您和您的交易伙伴之间创建连接器。
第 6 步:创建您与合作伙伴之间的连接器 中介绍了此过程。
注意
您必须仅为出站传输创建连接器。如果您仅执行入站传输,则不需要连接器。
-
测试AS2文件交换。
完成这些步骤后,您可以执行以下操作:
-
使用 Transfer AS2 Family
start-file-transfer
AWS Command Line Interface (AWS CLI) 命令将文件发送到启用远程功能的伙伴服务器。 -
通过您的虚拟私有云 (VPC) AS2 端点,在端口 5080 上从支持远程功能的合作伙伴服务器接收文件。
步骤 1:为创建证书 AS2
AS2交易所的双方都需要 X.509 证书。您可以按喜欢的任何方式创建这些证书。本主题介绍如何使用命令行打开
注意
AS2证书的密钥长度必须至少为 2048 位,最多为 4096 位。
要与合作伙伴传输文件,请注意以下事项:
-
您可以将证书附加到配置文件。证书包含公钥或私钥。
-
您的交易伙伴将他们的公钥发送给您,而您则将您的公钥发送给他们。
-
您的交易伙伴使用您的公钥对消息进行加密,并使用其私钥对消息进行签名。相反,您可以使用合作伙伴的公钥对消息进行加密,然后使用您的私钥对消息进行签名。
注意
如果您更喜欢使用管理密钥GUI,Portecle
是你可以使用的一个选项。
生成示例证书
重要
不要将您的私钥发送给您的合作伙伴。在此示例中,您为一方生成一组自签名的公钥和私钥。如果您打算同时充当两个交易伙伴进行测试,则可以重复这些说明以生成两组密钥:每个交易伙伴一组。在这种情况下,您无需生成两个根证书颁发机构 (CAs)。
-
运行以下命令生成模数为 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
国家/地区代码 由两个字母组成的代码,代表您的组织所在的国家/地区。 ST
州、地区或省 组织所在的州、地区或省。(在本例中,区域不是指您的 AWS 区域。) L
所在地名称 组织所在的城市。 O
组织名称 贵组织的法定完整名称,包括后缀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
注意
某些AS2启用了 Open 的服务器(例如 Op AS2 en)要求您使用相同的证书进行签名和加密。在这种情况下,您可以为这两个目的导入相同的私钥和证书。为此,请运行以下命令而不是之前的两个命令:
/usr/bin/openssl genrsa -out signing-and-encryption-key.pem 2048
-
运行以下命令创建证书签名请求 (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 -
接下来,必须创建一个
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 创建AS2启用了 Transfer Famil AWS CLI y 的服务器。
注意
许多示例步骤都使用从文件加载参数的命令。有关使用文件加载参数的更多详细信息,请参阅如何从文件加载参数。
如果要改用控制台,请参阅 使用 Tran AS2 sfer Family 控制台创建服务器。
与创建SFTP或FTPS AWS Transfer Family 服务器的方式类似,您可以使用create-server
AWS CLI 命令的--protocols AS2
参数创建AS2启用了的服务器。目前,Transfer Family 仅支持VPC终端节点类型和使用该AS2协议的 Amazon S3 存储。
当你使用create-server
命令为 AS2 Transfer Family 创建启用服务器时,会自动为你创建一个VPC端点。此端点公开端TCP口 5080,以便它可以接受AS2消息。
如果您想将您的VPC终端节点公开到互联网,可以将弹性 IP 地址与您的VPC终端节点相关联。
要使用这些说明,您需要以下内容:
-
您的 IDVPC(例如,vpc-abcdef01)。
-
您的VPC子网(例如 sub net-abcdef01、01、subnet-021345ab)。IDs subnet-subnet-abcdef
-
一个或多个IDs安全组,允许您的贸易伙伴通过TCP端口 5080 传入流量(例如 sg-1234567890abcdef0 和 sg-abcdef0123 4567890)。
-
(可选)您要与VPC终端节点关联的弹性 IP 地址。
-
如果您的贸易伙伴未VPC通过a连接到您的贸易伙伴VPN,则需要一个互联网网关。有关更多信息,请参阅《亚马逊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终端节点设为公开。您只能通过
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记录。要让您的交易伙伴访问服务器,您需要向他们提供以下信息。在这种情况下,
指的是您的 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地址或公共终端节点(如果您将弹性 IP 地址与终端节点相关联)访问您的服务器。
如果您的服务器配置正确,则连接将成功。但是,您将收到HTTP状态码 400(错误请求)响应,因为您没有发送有效的AS2消息。
-
对于公共端点(如果您在上一步中关联了弹性 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
-
-
(可选)配置日志记录角色。Transfer Family 以结构化JSON格式将发送和接收的消息状态记录到亚马逊 CloudWatch 日志中。要让 Transfer Family 能够访问您账户中的 CloudWatch 日志,您必须在服务器上配置日志角色。
创建信任
transfer.amazonaws.com
的 AWS Identity and Access Management (IAM) 角色并附加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
命令。如果您使用相同的证书进行加密和签名,请两次导入相同的证书(一次是 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
现在,通过运行以下命令来创建合作伙伴配置文件。此命令仅使用合作伙伴的公钥证书。要使用此命令,请将
替换为您自己的信息;例如,您的合作伙伴的AS2姓名和证书IDs。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 步:创建您与合作伙伴之间的协议
此过程说明了如何使用创建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 Famil SFTP y 相同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 步:创建您与合作伙伴之间的连接器
此过程说明了如何使用创建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-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 Famil AS2 y 测试文件交换情况
从您的交易伙伴那里接收文件
如果您将公有弹性 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终端节点相关联,请通过端口 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 或 aVPN)。按照以下格式URL向您的合作伙伴提供您的VPC终端节点。
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 通过引用连接器 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
命令会返回连接器IDsURLs、以及连接器的 Amazon 资源名称 (ARNs)。
要返回特定连接器的属性,请使用要使用的 ID 运行以下命令:
aws transfer describe-connector --connector-id
your-connector-id
该describe-connector
命令返回连接器的所有属性,包括其角色URL、配置文件、邮件处置通知 (MDNs)、标签和监控指标。
您可以通过查看和文件来确认合作伙伴是否成功接收JSON了MDN文件。这些文件是根据 文件名和位置 中描述的约定命名的。如果您在创建连接器时配置了日志记录角色,则还可以检查 CloudWatch 日志中的AS2消息状态。