设置安全的网络通信

安全网络通信 (SNC) 通过加密内部数据网关和 SAP 系统之间的数据,增强了 SAP 与 Power Platform 集成的安全性。 本文将带您了解如何设置 SNC 作为概念验证。

重要提示

本文中介绍的设置和建议不适用于生产。 有关在生产环境中设置 SNC 的指导,请咨询您的安全团队、内部策略和 Microsoft 合作伙伴。

先决条件

  1. 您有一个使用 SAP ERP 连接器的 SAP 连接
  2. 您可以访问可以重启和管理的 SAP 实例。
  3. 安装并设置了 SAP GUI。
  4. 您熟悉公钥和私钥技术。
  5. 安装并设置了 OpenSSL。 如果您有 Git for Windows,请将 C:\Program Files\Git\usr\bin\ 添加到您的系统路径中,以便您可以使用 openssl 命令。

安装 SAP 公共加密库

SAP公共加密库支持 SAP Connector for Microsoft .NET (NCo),对内部数据网关和 SAP 之间的通信进行加密。 要提取库,您需要一个名为 SAPCAR 的专有解压缩实用程序。

获取 SAPCAR

  1. 转到 SAP 软件下载中心,使用您的 SAP 凭据登录。
  2. 搜索 SAPCAR 并选择最新的非存档版本。
  3. 选择操作系统。
  4. 下载 .EXE 文件保存到 C:\sap\SAR

获取 SAP 公共加密库

  1. 在 SAP 软件下载中心,搜索“COMMONCRYPTOLIB”,选择最新版本。
  2. 选择操作系统。
  3. 下载最新发布日期为 C:\sap\SAR 的 .SAR 文件。

提取 SAP 公共加密库

  1. 打开 PowerShell 并转到 C:\sap\SAR

  2. 输入以下命令,用您的值替换 xxxx

    .\SAPCAR_xxxx.EXE -xvf .\SAPCRYPTOLIBP_xxxx.SAR -R .\..\libs\sapcryptolib
    
  3. 确认 sapgenpse.exe 位于 C:\sap\libs\sapcryptolib 目录中。

生成证书

现在,您已经安装了 SAP 公共加密库,您可以生成证书来在您的内部数据网关和 SAP 系统之间建立信任和加密。

警告

此方法仅用于演示目的,不建议用于生产系统。 对于生产系统,请咨询您的内部 PKI 指南或安全团队。

在此示例中,我们的证书结构如下图所示。 根 CA [O=Contoso,CN=Root CA] 对 SNC 加密证书 [O=Contoso,CN=SNC] 和用户证书 [O=Contoso,CN=UserIDs] 进行签名。 本文重点介绍如何设置根 CA 和 SNC 证书。

显示从根 CA 到加密证书、签名证书和用户标识的证书流的图表。

创建证书

  1. 设置文件夹结构:

    mkdir rootCA
    mkdir sncCert
    
    # Create the necessary serial and index files if they don't exist
    if (-Not (Test-Path "rootCA\index.txt")) { New-Item -Path "rootCA\index.txt" -ItemType File }
    if (-Not (Test-Path "rootCA\serial")) { Set-Content -Path "rootCA\serial" -Value "01" }
    
  2. 生成根 CA:

    openssl genpkey -algorithm RSA -out rootCA/ca.key.pem -pkeyopt rsa_keygen_bits:2048
    openssl req -x509 -new -key rootCA/ca.key.pem -days 7305 -sha256 -extensions v3_ca -out rootCA/ca.cert.pem -subj "/O=Contoso/CN=Root CA"
    
  3. 生成 SNC 证书:

    openssl genrsa -out sncCert/snc.key.pem 2048
    openssl req -key sncCert/snc.key.pem -new -sha256 -out sncCert/snc.csr.pem -subj "/O=Contoso/CN=SNC"
    
  4. 创建一个 OpenSSL 配置文件, sncCert/extensions.cnf用于签名:

    subjectKeyIdentifier = hash
    authorityKeyIdentifier = keyid,issuer
    basicConstraints = critical,CA:false
    keyUsage = critical,digitalSignature,keyEncipherment,dataEncipherment
    extendedKeyUsage = clientAuth,emailProtection
    
  5. 使用根 CA 对 SNC 证书进行签名:

    openssl x509 -req `
       -in sncCert/snc.csr.pem `
       -CA rootCA/ca.cert.pem `
       -CAkey rootCA/ca.key.pem `
       -CAcreateserial `
       -out sncCert/snc.cert.pem `
       -days 3650 `
       -sha256 `
       -extfile sncCert\extensions.cnf `
       -extensions v3_leaf
    

创造个人安全的环境

为本地数据网关创建 Personal Secure 环境(PSE)。 NCo 库在 PSE 中查找 SNC 证书。

  1. 创建 PKCS#12 容器:

    openssl pkcs12 -export -out snc.p12 -inkey sncCert\snc.key.pem -in sncCert\snc.cert.pem -certfile rootCA\ca.cert.pem
    
  2. 创建 SECUDIR 环境变量:

    1. 打开系统属性:在文件资源管理器中,右键单击此电脑,然后选择属性>高级系统设置
    2. 选择环境变量
    3. 系统变量下,选择新建
    4. 将变量名设置为 SECUDIR
    5. 将该值设置为 C:\sapsecudir
    6. 选择确定
  3. 将 PKCS#12 容器导入 PSE:

    C:\sap\libs\sapcryptolib\sapgenpse.exe import_p12 -p SAPSNCSKERB.pse C:\pki-certs\snc.p12
    

为 SNC 设置 SAP

  1. 登录 SAP GUI。

  2. 转到交易代码 SNC0

  3. 输入 E 作为工作区。

  4. 从顶栏中选择新条目,并填写所需信息。

    显示系统访问控制列表的 SAP GUI 屏幕截图。

  5. 选择保存

  6. 返回 SAP GUI 主屏幕。

  7. 转到交易代码 RZ10

  8. 设置以下配置文件参数:

    snc/accept_insecure_gui: 1
    snc/accept_insecure_rfc: 1
    snc/enable: 1
    snc/extid_login_diag: 1
    snc/extid_login_rfc: 1
    snc/gssapi_lib: $(SAPCRYPTOLIB)
    snc/identity/as: p:CN=ID3, O=Contoso
    snc/permit_insecure_start: 1
    snc/data_protection/max: 3```
    
    
  9. 保存配置文件参数并重新启动 SAP 系统。

在 SAP 和本地数据网关之间交换证书

您需要在本地数据网关和 SAP 之间交换证书以建立信任。

将网关 SNC 证书添加到 SAP

  1. 在 SAP GUI 中,转到事务代码 STRUST
  2. 如果 SNC SAPCryptolib 有一个红色的 X,请右键单击它,然后选择创建
  3. 否则,双击 SNC SAPCryptolib,然后双击您的自己的证书
  4. 选择 导入证书 ,然后选择您的 sncCert\snc.cert.pem 公有证书。
  5. 选择添加到证书列表

将 SAP SNC 证书添加到本地数据网关

  1. 在 SAP GUI 中,转到事务代码 STRUST

  2. 双击 SNC SAPCryptolib,然后双击您的自己的证书

  3. 导出公共证书。

  4. 将公共证书移动到网关机器上(例如,C:\sap\contoso-public-key.crt)。

  5. 将证书导入网关的 PSE:

    C:\sap\libs\sapcryptolib\sapgenpse.exe maintain_pk -p SAPSNCSKERB.pse -v -a C:\pki-certs\sncCert\sapkerb.public.cert
    

测试安全连接

按照步骤测试安全连接。 成功完成测试后,就可以在生产环境中实施 SNC 了。

  1. 在 Power Automate 中创建即时流。

  2. 添加 SAP ERP Call Function 操作。

  3. 将以下 SNC 参数添加到 SAP 连接 字符串中:

    {
    "AppServerHost": "xxx",
    "Client": "xx",
    "SystemNumber": "xx",
    "LogonType": "ApplicationServer",
    "SncLibraryPath": "C:\\sap\\libs\\sapcryptolib\\sapcrypto.dll",
    "SncMyName": "p:CN=SNC, O=Contoso",
    "SncPartnerName": "p:CN=ID3, O=Contoso",
    "SncQop": "Default",
    "UseSnc": "true",
    "SncSso": "Off"
    }```
    
    
  4. 使用 STFC_CONNECTION RFC 功能测试连接。

    显示 Power Automate 流中测试结果的屏幕截图。

重要提示

确保您安全地处理私钥,并在完成此设置后将其删除。

下一步

使用 SSO 证书设置 Microsoft Entra ID