Configuración de una configuración AS2 - AWS Transfer Family

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Configuración de una configuración AS2

Este tutorial explica cómo configurar una configuración de la Declaración de Aplicabilidad 2 (AS2) con. AWS Transfer Family Tras completar los pasos aquí descritos, dispondrá de un servidor compatible con AS2 preparado para aceptar mensajes de AS2 de un socio comercial de muestra. También dispondrá de un conector que se puede utilizar para enviar mensajes de AS2 al socio comercial de muestra.

nota

Algunas partes del ejemplo de configuración utilizan el AWS Command Line Interface ()AWS CLI. Si aún no lo ha instalado AWS CLI, consulte Instalación o actualización de la última versión de AWS CLI en la Guía del AWS Command Line Interface usuario.

  1. Cree certificados para usted y su socio comercial. Si tiene certificados existentes que pueda utilizar, puede omitir esta sección.

    Este proceso se describe en Paso 1: creación de los certificados para AS2.

  2. Cree un AWS Transfer Family servidor que utilice el protocolo AS2. Si lo desea, puede agregar una dirección IP elástica al servidor para que esté conectado a Internet.

    Este proceso se describe en Paso 2: creación de un servidor de Transfer Family que utilice el protocolo AS2.

    nota

    Debe crear un servidor de Transfer Family solo para transferencias entrantes. Si solo realiza transferencias salientes, no necesita un servidor de Transfer Family.

  3. Importar los certificados que se han creado en el paso 1.

    Este proceso se describe en Paso 3: importación de certificados como recursos de certificados de Transfer Family.

  4. Para configurar sus socios comerciales, cree un perfil local y un perfil de socio.

    Este proceso se describe en Paso 4: creación de perfiles para usted y su socio comercial.

  5. Crear un acuerdo entre usted y su socio comercial.

    Este proceso se describe en Paso 5: creación de un acuerdo entre usted y su socio.

    nota

    Debe crear un acuerdo únicamente para las transferencias entrantes. Si solo realiza transferencias salientes, no necesita un acuerdo.

  6. Crear un conector entre usted y su socio comercial.

    Este proceso se describe en Paso 6: creación de un conector entre usted y su socio.

    nota

    Debe crear un conector únicamente para las transferencias salientes. Si solo realiza transferencias entrantes, no necesita conector.

  7. Probar un intercambio de archivos AS2.

    Este proceso se describe en Paso 7: prueba del intercambio de archivos a través de AS2 mediante Transfer Family.

Una vez completados estos pasos, podrá realizar lo siguiente:

  • Envíe archivos a un servidor asociado remoto habilitado para AS2 con el comando Transfer Family start-file-transfer AWS Command Line Interface (AWS CLI).

  • Reciba archivos de un servidor asociado remoto habilitado para AS2 en el puerto 5080 a través de su punto de conexión de nube privada virtual (VPC).

Paso 1: creación de los certificados para AS2

En un intercambio AS2, ambas partes necesitan certificados X.509. Puede crear estos certificados de la forma que lo desee. En este tema, se describe cómo utilizar OpenSSL desde la línea de comandos para crear un certificado raíz y, a continuación, firmar los certificados subordinados. Las dos partes deben generar sus propios certificados.

nota

La longitud de la clave de los certificados AS2 debe ser de al menos 2048 bits y, como máximo, de 4096.

Para transferir archivos con un socio, tenga en cuenta lo siguiente:

  • Puede adjuntar certificados a los perfiles. Los certificados contienen claves públicas o privadas.

  • Su socio comercial le envía sus claves públicas y usted le envía las suyas.

  • Su socio comercial cifra los mensajes con su clave pública y los firma con su clave privada. Por el contrario, usted encripta los mensajes con la clave pública de su socio y los firmas con su propia clave privada.

    nota

    Si prefiere administrar las claves con una interfaz gráfica de usuario, Portecle es una opción que puede utilizar.

Generación de certificados de ejemplo
importante

No envíe sus claves privadas a su socio. En este ejemplo, genera un conjunto de claves públicas y privadas autofirmadas para una de las partes. Si van a actuar como socios comerciales a efectos de prueba, puede repetir estas instrucciones para generar dos conjuntos de claves: uno para cada socio comercial. En este caso, no es necesario generar dos autoridades de certificación raíz (CA).

  1. Ejecute el siguiente comando para generar una clave privada RSA con un módulo de 2048 bits de longitud.

    /usr/bin/openssl genrsa -out root-ca-key.pem 2048
  2. Ejecute el siguiente comando para crear un certificado autofirmado con su archivo 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

    El argumento -subj consta de los siguientes valores.

    Nombre Descripción
    C Código de país Un código de dos letras para el país en el que se encuentra la organización.
    ST Estado, región o provincia Nombre del país o de la región donde se ubica su empresa. (En este caso, región no se refiere a su Región de AWS.)
    L Nombre de la localidad Nombre de la ciudad donde se ubica su empresa.
    O Nombre de la organización El nombre legal completo de su empresa, incluidos los sufijos, como LLC, Corp, etc.
    OU Nombre de la unidad organizativa La división de su empresa que se ocupa de este certificado.
    CN Nombre común o nombre de dominio completo (FQDN) En este caso, estamos creando un certificado raíz, por lo que el valor es ROOTCA. En estos ejemplos, utilizamos CN para describir el propósito del certificado.
  3. Cree una clave de firma y una clave de cifrado para su perfil local.

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

    Algunos servidores compatibles con AS2, como OpenAS2, requieren que se utilice el mismo certificado para la firma y para el cifrado. En este caso, puede importar la misma clave privada y el mismo certificado con ambos fines. Para ello, ejecute este comando en lugar de los dos comandos anteriores:

    /usr/bin/openssl genrsa -out signing-and-encryption-key.pem 2048
  4. Ejecute los siguientes comandos para crear solicitudes de firma de certificados (CSR) para que firme la clave raíz.

    /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. A continuación, debe crear un archivo signing-cert.conf y un archivo encryption-cert.conf.

    • Utilice un editor de texto para crear un archivo signing-cert.conf con los siguientes contenidos:

      authorityKeyIdentifier=keyid,issuer keyUsage = digitalSignature, nonRepudiation
    • Utilice un editor de texto para crear un archivo encryption-cert.conf con los siguientes contenidos:

      authorityKeyIdentifier=keyid,issuer keyUsage = dataEncipherment
  6. Por último, para crear los certificados firmados, ejecute los siguientes comandos.

    /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

Paso 2: creación de un servidor de Transfer Family que utilice el protocolo AS2

Este procedimiento explica cómo crear un servidor compatible con AS2 mediante Transfer Family AWS CLI.

nota

Muchos de los pasos del ejemplo utilizan comandos que cargan parámetros de un archivo. Para obtener más información sobre el uso de archivos para cargar parámetros, consulte Cómo cargar parámetros desde un archivo.

Si desea utilizar la consola en su lugar, consulte la Cree un servidor AS2 mediante la consola Transfer Family.

De forma similar a como se crea un servidor SFTP o FTPS, se crea un AWS Transfer Family servidor compatible con AS2 mediante el parámetro del comando. --protocols AS2 create-server AWS CLI Actualmente, Transfer Family solo admite los tipos de puntos de conexión de VPC y el almacenamiento de Amazon S3 con el protocolo AS2.

Al crear un servidor compatible con AS2 para Transfer Family mediante el comando create-server, se crea automáticamente un punto de conexión de VPC. Este punto de conexión expone el puerto TCP 5080 para que pueda aceptar mensajes de AS2.

Si desea exponer su punto de conexión de VPC públicamente a Internet, puede asociar direcciones IP elásticas a su punto de conexión de VPC.

Para utilizar estas instrucciones, necesita lo siguiente:

  • El ID de su VPC (p. ej., vpc-abcdef01).

  • Los ID de las subredes de VPC (p. ej., subnet-abcdef01, subnet-subnet-abcdef01, subnet-021345ab).

  • Uno o más identificadores de los grupos de seguridad que permiten el tráfico entrante en el puerto TCP 5080 desde sus socios comerciales (p. ej., sg-1234567890abcdef0 y sg-abcdef01234567890).

  • (Opcional) Las direcciones IP elásticas que desea asociar al punto de conexión de VPC.

  • Si su socio comercial no está conectado a su VPC a través de una VPN, necesitará una puerta de enlace de Internet. Para más información, consulte Conectar subredes a Internet por medio de una puerta de enlace de Internet en la Guía del usuario de Amazon VPC.

Creación de un servidor compatible con AS2
  1. Ejecute el siguiente comando de la . Reemplace cada user input placeholder por su propia información.

    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. (Opcional) Puede hacer público el punto de conexión de VPC. Puede adjuntar direcciones IP elásticas a un servidor de Transfer Family solo mediante una operación update-server. Los siguientes comandos detienen el servidor, lo actualizan con direcciones IP elásticas y, a continuación, lo vuelven a iniciar.

    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

    Este comando start-server crea automáticamente un registro DNS para usted que contiene la dirección IP pública de su servidor. Para que su socio comercial pueda acceder al servidor, debe proporcionarle la siguiente información. En este caso, your-region se refiere a su Región de AWS.

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

    La URL completa que proporciona a su socio comercial es la siguiente:

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

  3. Para comprobar si su servidor compatible con AS2 es accesible, utilice los siguientes comandos. Asegúrese de que se pueda acceder a su servidor a través de la dirección DNS privada de su punto de conexión de VPC o a través de su punto de conexión público (si asoció una dirección IP elástica a su punto de conexión).

    Si el servidor está configurado correctamente, la conexión se realizará correctamente. Sin embargo, recibirá una respuesta con el código de estado HTTP 400 (solicitud incorrecta) si no está enviando un mensaje AS2 válido.

    • Para un punto de conexión público (si asoció una dirección IP elástica en el paso anterior), ejecute el siguiente comando, sustituyendo el ID del servidor por la región.

      curl -vv -X POST http://s-your-server-id.transfer.your-region.amazonaws.com:5080
    • Si se conecta desde su VPC, ejecute los siguientes comandos para buscar el nombre de DNS privado del punto de conexión de VPC.

      aws transfer describe-server --server-id s-your-server-id

      Este comando describe-server devuelve el ID del punto de conexión de VPC en el parámetro VpcEndpointId. Use este valor para ejecute el siguiente comando.

      aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-your-vpc-endpoint-id

      Este comando describe-vpc-endpoints devuelve una matriz DNSEntries con varios parámetros DnsName. Utilice el nombre DNS regional (el que no incluye la zona de disponibilidad) en el siguiente comando.

      curl -vv -X POST http://vpce-your-vpce.vpce-svc-your-vpce-svc.your-region.vpce.amazonaws.com:5080

      Por ejemplo, el siguiente comando muestra ejemplos de valores para los marcadores de posición del comando anterior.

      curl -vv -X POST http://vpce-0123456789abcdefg-fghij123.vpce-svc-11111aaaa2222bbbb.us-east-1.vpce.amazonaws.com:5080
  4. (Opcional) Configurar un rol de registro. Transfer Family registra el estado de los mensajes enviados y recibidos en un formato JSON estructurado en los CloudWatch registros de Amazon. Para proporcionar a Transfer Family acceso a los CloudWatch registros de tu cuenta, debes configurar un rol de registro en tu servidor.

    Cree un rol AWS Identity and Access Management (de IAM) en el que confíe transfer.amazonaws.com y adjunte la política AWSTransferLoggingAccess gestionada. Para más información, consulte Creación de una política y un rol de IAM. Anote el Nombre de recurso de Amazon (ARN) del rol de IAM que acaba de crear y asócielo al servidor si ejecuta el siguiente comando update-server:

    aws transfer update-server --server-id your-server-id --logging-role arn:aws:iam::your-account-id:role/logging-role-name
    nota

    Aunque el rol de registro es opcional, le recomendamos que la configure de forma que pueda ver el estado de los mensajes y solucionar los problemas de configuración.

Paso 3: importación de certificados como recursos de certificados de Transfer Family

En este procedimiento, se explica cómo importar certificados mediante AWS CLI. Si en su lugar, desea utilizar la consola Transfer Family, consulte Importar certificados AS2.

Para importar los certificados de firma y cifrado que creó en el paso 1, ejecute los siguientes comandos import-certificate. Si utiliza el mismo certificado para cifrar y firmar, importe el mismo certificado dos veces (una con el uso SIGNING y otra con el uso ENCRYPTION).

aws transfer import-certificate --usage SIGNING --certificate file://signing-cert.pem \ --private-key file://signing-key.pem --certificate-chain file://root-ca.pem

Este comando devuelve su firma CertificateId. En la siguiente sección, este identificador de certificado se denomina 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

Este comando devuelve el cifrado CertificateId. En la siguiente sección, este identificador de certificado se denomina my-encrypt-cert-id.

A continuación, importe los certificados de cifrado y firma de su socio ejecutando los siguientes comandos.

aws transfer import-certificate --usage ENCRYPTION --certificate file://partner-encryption-cert.pem \ --certificate-chain file://partner-root-ca.pem

Este comando devuelve el cifrado de su socio CertificateId. En la siguiente sección, este identificador de certificado se denomina partner-encrypt-cert-id.

aws transfer import-certificate --usage SIGNING --certificate file://partner-signing-cert.pem \ --certificate-chain file://partner-root-ca.pem

Este comando devuelve la firma de su socio CertificateId. En la siguiente sección, este identificador de certificado se denomina partner-signing-cert-id.

Paso 4: creación de perfiles para usted y su socio comercial

En este procedimiento se explica cómo crear perfiles AS2 mediante. AWS CLI Si en su lugar, desea utilizar la consola Transfer Family, consulte Creación de perfiles de AS2.

Ejecute el siguiente comando para crear su perfil AS2 local. Este comando hace referencia a los certificados que contienen sus claves públicas y privadas.

aws transfer create-profile --as2-id MYCORP --profile-type LOCAL --certificate-ids \ my-signing-cert-id my-encrypt-cert-id

Este comando devuelve su ID de perfil. En la siguiente sección, este ID se denomina my-profile-id.

Ahora, ejecute el siguiente comando para crear el perfil del socio. Este comando usa solo los certificados de clave pública de su socio. Para usar este comando, sustituya user input placeholders por su propia información; por ejemplo, el nombre AS2 y los ID de certificado de su socio.

aws transfer create-profile --as2-id PARTNER-COMPANY --profile-type PARTNER --certificate-ids \ partner-signing-cert-id partner-encrypt-cert-id

Este comando devuelve el ID de perfil de su socio. En la siguiente sección, este ID se denomina partner-profile-id.

nota

En los comandos anteriores, sustituya MYCORP por el nombre de su empresa y PARTNER-COMPANY por el nombre de la empresa de su socio comercial.

Paso 5: creación de un acuerdo entre usted y su socio

En este procedimiento, se explica cómo crear acuerdos AS2 mediante AWS CLI. Si en su lugar, desea utilizar la consola Transfer Family, consulte Creación de acuerdos AS2.

Los acuerdos unen los dos perfiles (local y asociado), sus certificados y una configuración de servidor que permite las transferencias AS2 entrantes entre dos partes. Puede enumerar sus elementos si ejecuta los siguientes comandos.

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

Este paso requiere un bucket de Amazon S3 y un rol de IAM con acceso de lectura/escritura hacia y desde el bucket. Las instrucciones para crear este rol son las mismas que las de los protocolos SFTP, FTP y FTPS de Transfer Family y están disponibles en Creación de una política y un rol de IAM.

Para crear un acuerdo, necesita los siguientes elementos:

  • El nombre del bucket de Amazon S3 (y el prefijo del objeto, si se ha especificado)

  • El ARN del rol de IAM con acceso al bucket

  • Su ID de servidor de Transfer Family

  • Su ID de perfil y el ID de perfil de su socio

Ejecute el siguiente comando para crear el panel.

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

Si se ejecuta correctamente, este comando devolverá el ID del acuerdo. A continuación, puede ver los detalles del acuerdo con el siguiente comando.

aws transfer describe-agreement --agreement-id agreement-id --server-id your-server-id

Paso 6: creación de un conector entre usted y su socio

En este procedimiento, se explica cómo crear conectores AS2 mediante AWS CLI. Si en su lugar, desea utilizar la consola Transfer Family, consulte Configure los conectores AS2.

Puede utilizar la operación de API StartFileTransfer para enviar archivos almacenados en Amazon S3 al punto de conexión AS2 de su socio comercial mediante un conector. Puede buscar los perfiles que se han creado anteriormente si ejecuta el siguiente comando.

aws transfer list-profiles

Al crear el conector, debe proporcionar la URL del servidor AS2 de su socio. Copie el siguiente texto un archivo denominado 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" }
nota

Por EncryptionAlgorithm ejemplo, no especifique el DES_EDE3_CBC algoritmo a menos que deba admitir un cliente antiguo que lo requiera, ya que se trata de un algoritmo de cifrado débil.

Ejecute el siguiente comando para crear el conector.

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

Paso 7: prueba del intercambio de archivos a través de AS2 mediante Transfer Family

Recibir un archivo de su socio comercial

Si asoció una dirección IP elástica pública a su punto de conexión de VPC, Transfer Family creó automáticamente un nombre DNS que contiene su dirección IP pública. El subdominio es el ID de su AWS Transfer Family servidor (del formatos-1234567890abcdef0). Proporcione la URL de su servidor a su socio comercial en el siguiente formato.

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

Si no asoció una dirección IP elástica pública a su punto de conexión de VPC, busque el nombre de host del punto de conexión de VPC que puede aceptar mensajes de AS2 a través de HTTP POST de sus socios comerciales en el puerto 5080. Para recuperar los detalles del punto de conexión de VPC, utilice el siguiente comando.

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

Por ejemplo, supongamos que el comando anterior devuelve un ID de punto de conexión de VPC de vpce-1234abcd5678efghi. A continuación, debe utilizar el siguiente comando para recuperar los nombres de DNS.

aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-1234abcd5678efghi

Este comando devuelve todos los detalles del punto de conexión de VPC que necesita para ejecutar el siguiente comando.

El nombre DNS aparece en la matriz DnsEntries. Su socio comercial debe estar dentro de su VPC para acceder a su punto de conexión de VPC (p. ej., a través de AWS PrivateLink o una VPN). Proporcione la URL del punto de conexión de VPC a su socio en el siguiente formato.

http://vpce-your-vpce-id.vpce-svc-your-vpce-svc-id.your-region.vpce.amazonaws.com:5080

Por ejemplo, la siguiente URL muestra valores de ejemplo para los marcadores de posición de los comandos anteriores.

http://vpce-0123456789abcdefg-fghij123.vpce-svc-11111aaaa2222bbbb.us-east-1.vpce.amazonaws.com:5080

En este ejemplo, las transferencias correctas se almacenan en la ubicación especificada en el parámetro base-directory que especificó en Paso 5: creación de un acuerdo entre usted y su socio. Si recibimos correctamente los archivos con el nombre myfile1.txt y myfile2.txt, los archivos se almacenan como /path-defined-in-the-agreement/processed/original_filename.messageId.original_extension. Aquí, los archivos se almacenan como /DOC-EXAMPLE-DESTINATION-BUCKET/AS2-inbox/processed/myfile1.messageId.txt y /DOC-EXAMPLE-DESTINATION-BUCKET/AS2-inbox/processed/myfile2.messageId.txt.

Si configuró una función de registro al crear su servidor Transfer Family, también puede comprobar el estado de los mensajes AS2 en sus CloudWatch registros.

Enviar un archivo a su socio comercial

Puedes usar Transfer Family para enviar mensajes AS2 haciendo referencia al ID del conector y a las rutas de acceso a los archivos, como se muestra en el siguiente comando 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"

Para obtener los detalles de los conectores, ejecute el siguiente comando:

aws transfer list-connectors

El comando list-connectors devuelve los ID de los conectores, las URL y los nombres de recursos de Amazon (ARN) de los conectores.

Para devolver las propiedades de un conector concreto, ejecute el siguiente comando con el ID que desee usar:

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

El comando describe-connector devuelve todas las propiedades del conector, incluidas la URL, los roles, los perfiles, los avisos de disposición de mensajes (MDNs), las etiquetas y las métricas de supervisión.

Para confirmar que el socio recibió correctamente los archivos, consulte los archivos JSON y MDN. Estos archivos se nombran de acuerdo con las convenciones descritas en Nombres y ubicaciones de los archivos. Si configuró una función de registro al crear el conector, también puede comprobar en sus CloudWatch registros el estado de los mensajes AS2.