Está en la página 1de 32

CUSTOMER

Autenticación de ECP a Cloud Integration con SSL


Client Certificate
Memoria técnica

Contents
RESUMEN ......................................................................................................................................................... 2
Paso 1. Creación de instancia runtime de CI (BTP Cockpit) ..............................................................................2
Paso 2. Creación de certificado de cliente (BTP Cockpit) ..................................................................................5
Paso 3. Descargar certificado cliente y llave privada (BPT Cockpit) ................................................................7
Paso 4. Descargar certificados de servidor o de Load Balancer (Cloud Integration) ...................................11
Paso 5. Prueba de conexión desde Postman (Postman, opcional) ................................................................13
Paso 6. Generación de archivos PFX y PSE (Máquina local)..........................................................................16
Paso 7. Creación de ABAP Proxy Ping (ECP) ..................................................................................................18
Paso 8. Creación SSL Client Identity BTP_CI (ECP) ........................................................................................22
Paso 9. Importar archivo PSE con certificado de cliente (ECP) .....................................................................23
Paso 10. Importar certificados de servidor de Cloud Integration (ECP) ........................................................25
Paso 11. Configurar un Service Consumer desde SOAMANAGER (ECP) ......................................................26
Paso 12. Probar ABAP Proxy (ECP) ...................................................................................................................30
REFERENCIAS ............................................................................................................................................... 31

Jun 2023
Rafael Moncayo i834039
RESUMEN
Esta memoria técnica contiene los pasos de autenticación con certificado de cliente de SAP EC Payroll a SAP
Cloud Integration.

Paso 1. Creación de instancia runtime de CI (BTP Cockpit)


[Este paso se ejecuta una sola vez por subcuenta]
Fue necesario crear una instancia en la subcuenta “MEX-BTPPayrollPRE” para poder crear credenciales tanto
OAuth como certificados SSL de cliente.
Para ello, se navega a la subcuenta MEX-BTPPayrollPRE y se selecciona Instances and Subscriptions en el
panel izquierdo y posteriormente se da clic al botón Create.

Se asignan los siguiente valores en el wizard:


• Service: Process Integration Runtime”
• Plan: integration-flow
• Runtime Environment: Cloud Foundry
• Space: dev
• Instance name: flowclient
En el siguiente paso se dejan los valores por defecto.
Se confirman los parámetros seleccionados.

Paso 2. Creación de certificado de cliente (BTP Cockpit)


[Esta tarea se ejecuta cada vez que se requiera generar un certificado nuevo]

NOTA: Se recomienda crear credenciales por cada macro-proceso o equipos de desarrollo. De esta manera
durante la operación es más sencillo eliminar y renovar certificados sin afectar a todas las integraciones.
Navegar a la subcuenta y en el panel izquierdo seleccionar Instances and Subscriptions. En la sección de
Intances, abrir la instancia flowclient creada en el paso 1.

En la sección Service Keys dar clic en Create para crear nuevas credenciales de cliente.

Asignar los siguiente atributos:


• Service key name: msg_clientcert_sf_2023 (ej.)
Opcionalmente en el nombre del certificado se puede incluir el macro proceso o área de negocio que lo
va a consumir.
• Key Type: Certificate
• External Certificate: (blanco)
• Validity in days: 365
Un certificado tiene vigencia máxima de un año.
• Key size: 2048
Paso 3. Descargar certificado cliente y llave privada (BPT Cockpit)
[Esta tarea se ejecuta cada vez que se requiera generar un certificado nuevo]
Navegar a la subcuenta y en el panel izquierdo seleccionar Instances and Subscriptions. En la sección de
Intances, abrir la instancia flowclient. En la sección Service Keys, abrir con el botón de acciones del
certificado y seleccionar View.
Copiar en un block de notas o equivalente el texto del atributo “certificate” que está dentro del JSON.

Si observa que el json contiene en 3 ocasiones el texto -----BEGIN CERTIFICATE----- es porque contiene la
cadena completa de los certificados, es decir, 3 certificados.
Ahora hay que reemplazar los secuencia de caracteres “\n” por saltos de línea. En mi caso, por estar utilizando
gvim, utilizo el comando :1,$s/\\n/\r/g
Guardamos el archivo con extensión .crt: msg_clientcert_sf_2023.crt

Posteriormente hacemos algo similar con la llave privada.


Remplazamos las secuencias de caracteres \n por saltos de línea
Y guardamos el archivo con extensión .key: msg_clientcert_sf_2023.key

Paso 4. Descargar certificados de servidor o de Load Balancer (Cloud Integration)


[Esta tarea se ejecuta cada vez que se requiera contar con los certificados de servidor]
Descargar los 3 certificados del load balancer de Cloud Integration. Una forma muy práctica para descargarlos
es entrar a la cuenta de Cloud Integration y en la sección de monitoreo entrar al tile Connectivity Tests.

En la pestaña TLS colocar el hostname de runtime de los flujos de integración. En este caso mex-btppayrollpre-
zw7x1jal.it-cpi013-rt.cfapps.us21.hana.ondemand.com.
El archivo zip contiene los 3 certificados de servidor.

Paso 5. Prueba de conexión desde Postman (Postman, opcional)

En postman, configure los certificados de cliente en Settings.


En la pestaña Certificates, añada un nuevo certificado con el botón Add Certificate.

En Host coloque el hostnome de Runtime de Cloud Integration: mex-btppayrollpre-zw7x1jal.it-cpi013-


rt.cfapps.us21.hana.ondemand.com. Incluya los archivos CRT y KEY.

Genere un nuevo request tipo POST a la URL al endpoint del flujo de pruebas: https://mex-btppayrollpre-
zw7x1jal.it-cpi013-rt.cfapps.us21.hana.ondemand.com/cxf/santander/btp/ping
Inhiba la cabecera por defecto Content-Type y coloque explícitamente la cabecera Content-Type: text/xml
Note que no es necesario colocar credenciales porque tomará el certificado de cliente de la configuración
general.

Coloque el siguiente XML como el cuerpo de la solicitud


<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ping="http://santander.com/hcm/nomina/2023/ping">
<soapenv:Header/>
<soapenv:Body>
<ping:Hello>
<Salutation>Hi</Salutation>
</ping:Hello>
</soapenv:Body>
</soapenv:Envelope>

Al ejecutar la prueba debería obtener un resultado similar con estatus http 200.
Paso 6. Generación de archivos PFX y PSE (Máquina local)
[Se ejecuta cada que se quiera importar o renovar un certificado de cliente X.509 en ECP]
El archivo PFX va a contener tanto el certificado X.509 como la llave privada. En S/4HANA este formato se
puede importar directamente en la transacción STRUST, pero en ECP nos servirá de paso intermedio para
generar el archivo PSE que es el que utiliza SAP.

Ejecutar la siguiente línea de comando en el directorio donde están los archivos:


openssl pkcs12 -export -inkey msg_clientcert_sf_2023.key -in msg_clientcert_sf_2023.crt -
out msg_clientcert_sf_2023.pfx

Para convertir el archivo PFX a formato PSE, es necesario descargar SAP CRYPTO LIB. Citando la nota
2148457:
Obtain a Windows version of SAPCRYPTOLIB and unpack it on your Windows PC (where you run
SAPgui). You need "sapgenpse.exe" and "sapcrypto.dll"
The files can be downloaded at following location:
https://support.sap.com/en/my-support/software-downloads.html -> Installations & Upgrades -> By
Category -> SAP Cryptographic Software -> SAPCRYPTOLIB -> COMMONCRYPTOLIB 8

También hay que descargar SAPCAR para descomprimir el archivo SAPCRYPTOLIBP_8550-20011729.SAR


Una vez descarcados estos dos componentes, descomprimimos el archivo con el comando similar a
../sap\ car/sapcar.exe -xvf SAPCRYPTOLIBP_8550-20011729.SAR

El comando sapgenpse.exe va a escribir un archivo en la carpeta %HOME%/AppData/Local/sec por lo que es


necesario asegurar que exista la carpeta:
Ahora se puede utilizar el comando sapgenpse.exe para convertir el archivo PFX al formato PSE.
sapgenpse.exe import_p12 -p msg_clientcert_sf_2023.pse msg_clientcert_sf_2023.pfx

Paso 7. Creación de ABAP Proxy Ping (ECP)


[Se ejecuta una sola vez por cada Service Consumer a desarrollar únicamente en ambiente de desarrollo]

En la transacción SPROXY crear un nuevo Service Consumer a partir de un WSDL provisto. En este caso se
utilizó este archivo.
Paso 8. Creación SSL Client Identity BTP_CI (ECP)
[Se ejecuta una sola vez por ambiente]

Para una mejor gestión de los certificados de servidor y el certificado de cliente, se crea dentro de la transacción
STRUST un nuevo SSL Client Identity.
Regresar a la pantalla principal y cambiar el modo a editar.

Paso 9. Importar archivo PSE con certificado de cliente (ECP)


[Se ejecuta una sola vez por ambiente]

En la transacción STRUST, importar archivo PSE.


Enter the password of the PSE file.

Una vez que se visualiza el certificado X.509 en pantalla, lo guardamos como


Paso 10. Importar certificados de servidor de Cloud Integration (ECP)
[Se ejecuta una sola vez por ambiente]

Con el certificado seleccionado, se van a importar los 3 certificados de servidor que se descargaron en el paso
4. Para ello de clic en el botón Import y seleccione el archivo “DigiCert Global Root G2.cer”. Después añada el
certificado en la misma entidad.
Hay que repetir los pasos para los archivos “DigiCert Global CA G2.cer” y
“_.it_cpi013_rt.cfapps.us21.hana.ondemand.com.cer”.
Una vez cargados los 3 certificados del load balancer de Cloud Integration, hay que guardar.

Paso 11. Configurar un Service Consumer desde SOAMANAGER (ECP)


[Se ejecuta una sola vez por servicio a consumir (ABAP Proxy)]

Ya estamos cerca, ahora debemos configurar un puerto en SOAMANAGER para que el servicio que nos
interese –en nuestro caso el servicio Ping– se conecte a Cloud Integration utilizando los certificados que se
configuraron en la transacción STRUST.
Primero entramos a la transacción SOAMANAGER y seleccionamos la opción Web Service Configuration.

Buscamos nuestro servicio


Y creamos un puerto nuevo con el indicador DEFAULT

Note que se marca el indicador “Logical port is Default”.


En el paso de seguridad es importante seleccionar el Client Identity BTP_CI que se definió y configuró en los
pasos 8,9 y 10.

Establecemos la URL del endpoint del flujo Ping: https://mex-btppayrollpre-zw7x1jal.it-cpi013-


rt.cfapps.us21.hana.ondemand.com/cxf/santander/btp/ping
Paso 12. Probar ABAP Proxy (ECP)
[A demanda]

El servicio Ping se puede encontrar en la transacción SPROXY navegando en el panel izquierdo Source >
External > SWCs > HOME > Namespaces > http://santander.com/hcm/nomina/2023/ping > Objects > Ping

En la ventana de Test Service Consumer, se puede dejar el puerto lógico en blanco porque al crear el puerto en
el paso 11, se definió como puerto por defecto.
Se puede ejecutar el proxy con el XML propuesto.

Y el resultado debe ser algo parecido a lo siguiente. Al ser síncrona la interfaz, no fue necesario la opción
COMMIT TRANSACTION.

REFERENCIAS
1. How to configure HTTPS Inbound Connection in Cloud Integration Cloud Foundry using Client
Certificate Authentication Step-by-Step
https://blogs.sap.com/2021/06/21/how-to-configure-https-inbound-connection-in-cloud-integration-cloud-
foundry-using-client-certificate-authentication-step-by-step/
Note: Navigate in order to get PDF document
2. Step-by-step Guide to Set Up Inbound Client Certificate Authentication, Cloud Foundry Environment
https://blogs.sap.com/2022/05/29/step-by-step-guide-to-set-up-inbound-client-certificate-authentication-
cloud-foundry-environment/
3. SAP Note 2148457 - How to convert the keypair of a PKCS#12 / PFX container into a PSE file
https://launchpad.support.sap.com/#/notes/2148457

También podría gustarte