SAP

Ativar o TLS 1.2 no SAP S/4 HANA as ABAP (1709 no HEC)

Escrito por Douglas Baiocco. Publicado em SAP.

Estamos recebendo diversas comunicações da SAP sobre a desativação do TLS 1.0/1.1 no SAP CPI e de como isso poderá afetar a nossa integração. Atualmente o SAP CPI aceita os protocolos na versão 1.0 e 1.1, mas após esse processo, apenas conexões utilizando o 1.2 serão aceitas. Isso pode ser um tremendo problema para quem não se preparar. Em nosso caso, o CPI é utilizado para a integração do S/4 HANA com o CRM da SAP (Hybris, também conhecido como C4C) e isso poderia custar a parada de todas as vendas da empresa.

Como utilizamos um ambiente relativamente novo, nossos produtos estão atualizados, por isso a dor de deixar tudo certo foi menor. Se este não for seu caso, problemas de acesso ao CPI podem começar a partir do dia 30 de setembro.

Aqui irei descrever como fizemos a nossa preparação e, se tudo der certo, após 30 de setembro como está o comportamento dos ambientes.

Para mais detalhes, as seguintes notas foram consultadas:

2923117 - SAP Cloud Platform NEO – TLS 1.2 Migration - How to address problems with old TLS protocol versions in clients of SCP

510007 - Additional considerations for setting up SSL on Application Server ABAP

Um especial agradecimento ao meu grande mestre, Sr Pedro Baroni, que mais uma vez lançou uma luz sobre minhas dúvidas e ao Sr. Isaac que me ajudou a nos testes com sua experiencia.

Verificando o TLS 1.2

Primeiramente precisamos encontrar um site para o teste do TLS 1.2. Eu vou usar o GITHUB para isso. Acesse o endereço https://www.ssllabs.com/ssltest/ e digite o site do github:

image001

Veja que o GITHUB tem suporte ao TLS 1.2 e está desativado o TLS 1.0 e 1.1:

image002

Vamos ao teste para saber como está o seu SAP e se ele está pronto para a mudança. Veja as etapas a seguir:

Instalar o certificado

Precisamos baixar o certificado do GUTHUB para podermos testar a conexão. Para isso, usei o CPI, mas você pode usar um browser qualquer.

Para fazer pelo CPI, acesse o teste de conectividade (Connectivity Test):

image003

Digite o endereço github.com e deixe a porta como 443, com as opções desativadas, conforme a imagem e clique em SEND:

image004

Se obtiver sucesso, você poderá fazer o download dos certificados, clicando neste botão:image005

Veja que os certificados serão baixados em um arquivo:

image006

Para instalar o certificado no SAP, use a STRUST:

image007

Entre em SSL CLIENT (Anonimo) e importe os dois certificados, não esquecendo de adicioná-los na lista:

image008

Testando o TLS 1.2

Vamos criar um programa ABAP para realizar uma conexão ao site do GITHUB. Para isso, entre na SE38 e digite o seguinte nome e clique em criar:

ZABAPGIT_TEST_SSL

image009

Preencha como segue e clique em gravar:

image010

Deixe no pacote $TMP:

image011

Coloque o seguinte conteúdo:

REPORT zabapgit_test_ssl.

* See https://github.com/larshp/abapGit/

PARAMETERS: p_url1 TYPE swc_value DEFAULT 'https://github.com',
            p_url2 TYPE swc_value DEFAULT 'https://api.github.com',
            p_id   TYPE ssfapplssl DEFAULT 'ANONYM'.
* api.github.com is used when pushing code back to github

SELECTION-SCREEN BEGIN OF BLOCK proxy WITH FRAME.
* proxy settings, fill if your system is behind a proxy
PARAMETERS: p_proxy  TYPE string,
            p_pxport TYPE string,
            p_puser  TYPE string,
            p_ppwd   TYPE string.
SELECTION-SCREEN END OF BLOCK proxy.

START-OF-SELECTION.
  PERFORM run USING p_url1.
  WRITE: /, '----', /.
  PERFORM run USING p_url2.

FORM run USING iv_url TYPE swc_value.

  DATA: lv_code          TYPE i,
        lv_url           TYPE string,
        li_client        TYPE REF TO if_http_client,
        lt_errors        TYPE TABLE OF string,
        lv_error_message TYPE string.

  IF iv_url IS INITIAL.
    RETURN.
  ENDIF.

  lv_url = iv_url.
  cl_http_client=>create_by_url(
    EXPORTING
      url           = lv_url
      ssl_id        = p_id
      proxy_host    = p_proxy
      proxy_service = p_pxport
    IMPORTING
      client        = li_client ).

  IF NOT p_puser IS INITIAL.
    li_client->authenticate(
      proxy_authentication = abap_true
      username             = p_puser
      password             = p_ppwd ).
  ENDIF.

  li_client->send( ).
  li_client->receive(
    EXCEPTIONS
      http_communication_failure = 1
      http_invalid_state         = 2
      http_processing_failed     = 3
      OTHERS                     = 4 ).
  IF sy-subrc <> 0.
    WRITE: / 'Error Number', sy-subrc, /.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    li_client->get_last_error(
      IMPORTING
        message = lv_error_message ).
    SPLIT lv_error_message AT cl_abap_char_utilities=>newline INTO TABLE lt_errors.
    LOOP AT lt_errors INTO lv_error_message.
      WRITE: / lv_error_message.
    ENDLOOP.
    WRITE: / 'Also check transaction SMICM -> Goto -> Trace File -> Display End'.
    RETURN.
  ENDIF.

* if SSL Handshake fails, make sure to also check https://launchpad.support.sap.com/#/notes/510007

  li_client->response->get_status(
    IMPORTING
      code = lv_code ).
  IF lv_code = 200.
    WRITE: / lv_url, ': ok'.
  ELSE.
    WRITE: / 'Error', lv_code.
  ENDIF.

ENDFORM.

Salve e ative o programa. Execute e veja o resultado:

image012

Note os erros. Para mais detalhes, entre na SMICM e acesse o trace:

image013

Localize as linhas abaixo. Veja que aparecem erros de versão do TSL:

image014

Resolvendo os problemas

Verificar a versão do NETWEAVER

Para prosseguirmos, verifique a sua versão do Netweaver. Para usar o TLS 1.2, a recomendação é utilizar o Netweaver Kernel 74x e mais novos.

Para verificar isso, veja o componente SAP_BASIS:

image015

Verifique no perfil DEFAULT.PFL (RZ10) se existem estes parâmetros. Se existirem, exclua-os:

  • ssf/name
  • ssf/ssfapi_lib
  • sec/libsapsecu
  • ssl/ssl_lib                                                                                                                                                                                                                         

Verificar a SAPCRYPTOLIB

Com estas alterações, verifique a versão da SAPCRYPTOLIB. A

A versão requerida é a CommonCryptoLib 8.4.38, a recomendada é a 8.4.49. para verificar entre na transação SMICM:

image016

Vá para TRACE FILE e selecione Exibir inicio:

image017

Procure por esta linha:

image018

Adicionando o suporte ao TLS 1.2

Entre na transação RZ10 no perfil DEFAULT.PFL:

image019

 Adicione o parâmetro ssl/client_ciphersuites com o seguinte valor: 150:PFS:HIGH::EC_P256:EC_HIGH

image020

Reinicie o sistema e repita o teste com o programa ZABAPGIT_TEST_SSL. Veja o resultado agora:

image021