安全网络通信 (SNC) 通过加密内部数据网关和 SAP 系统之间的数据,增强了 SAP 与 Power Platform 集成的安全性。 本文将带您了解如何设置 SNC 作为概念验证。
重要提示
本文中介绍的设置和建议不适用于生产。 有关在生产环境中设置 SNC 的指导,请咨询您的安全团队、内部策略和 Microsoft 合作伙伴。
先决条件
- 您有一个使用 SAP ERP 连接器的 SAP 连接。
- 您可以访问可以重启和管理的 SAP 实例。
- 安装并设置了 SAP GUI。
- 您熟悉公钥和私钥技术。
- 安装并设置了 OpenSSL。 如果您有 Git for Windows,请将
C:\Program Files\Git\usr\bin\
添加到您的系统路径中,以便您可以使用openssl
命令。
安装 SAP 公共加密库
SAP公共加密库支持 SAP Connector for Microsoft .NET (NCo),对内部数据网关和 SAP 之间的通信进行加密。 要提取库,您需要一个名为 SAPCAR 的专有解压缩实用程序。
获取 SAPCAR
- 转到 SAP 软件下载中心,使用您的 SAP 凭据登录。
- 搜索 SAPCAR 并选择最新的非存档版本。
- 选择操作系统。
- 下载 .EXE 文件保存到
C:\sap\SAR
。
获取 SAP 公共加密库
- 在 SAP 软件下载中心,搜索“COMMONCRYPTOLIB”,选择最新版本。
- 选择操作系统。
- 下载最新发布日期为
C:\sap\SAR
的 .SAR 文件。
提取 SAP 公共加密库
打开 PowerShell 并转到
C:\sap\SAR
。输入以下命令,用您的值替换
xxxx
:.\SAPCAR_xxxx.EXE -xvf .\SAPCRYPTOLIBP_xxxx.SAR -R .\..\libs\sapcryptolib
确认
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 证书。
创建证书
设置文件夹结构:
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" }
生成根 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"
生成 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"
创建一个 OpenSSL 配置文件,
sncCert/extensions.cnf
用于签名:subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer basicConstraints = critical,CA:false keyUsage = critical,digitalSignature,keyEncipherment,dataEncipherment extendedKeyUsage = clientAuth,emailProtection
使用根 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 证书。
创建 PKCS#12 容器:
openssl pkcs12 -export -out snc.p12 -inkey sncCert\snc.key.pem -in sncCert\snc.cert.pem -certfile rootCA\ca.cert.pem
创建 SECUDIR 环境变量:
- 打开系统属性:在文件资源管理器中,右键单击此电脑,然后选择属性>高级系统设置。
- 选择环境变量。
- 在系统变量下,选择新建。
- 将变量名设置为
SECUDIR
。 - 将该值设置为
C:\sapsecudir
。 - 选择确定。
将 PKCS#12 容器导入 PSE:
C:\sap\libs\sapcryptolib\sapgenpse.exe import_p12 -p SAPSNCSKERB.pse C:\pki-certs\snc.p12
为 SNC 设置 SAP
登录 SAP GUI。
转到交易代码
SNC0
。输入 E 作为工作区。
从顶栏中选择新条目,并填写所需信息。
选择保存。
返回 SAP GUI 主屏幕。
转到交易代码
RZ10
。设置以下配置文件参数:
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```
保存配置文件参数并重新启动 SAP 系统。
在 SAP 和本地数据网关之间交换证书
您需要在本地数据网关和 SAP 之间交换证书以建立信任。
将网关 SNC 证书添加到 SAP
- 在 SAP GUI 中,转到事务代码
STRUST
。 - 如果 SNC SAPCryptolib 有一个红色的 X,请右键单击它,然后选择创建。
- 否则,双击 SNC SAPCryptolib,然后双击您的自己的证书。
- 选择 导入证书 ,然后选择您的
sncCert\snc.cert.pem
公有证书。 - 选择添加到证书列表。
将 SAP SNC 证书添加到本地数据网关
在 SAP GUI 中,转到事务代码
STRUST
。双击 SNC SAPCryptolib,然后双击您的自己的证书。
导出公共证书。
将公共证书移动到网关机器上(例如,
C:\sap\contoso-public-key.crt
)。将证书导入网关的 PSE:
C:\sap\libs\sapcryptolib\sapgenpse.exe maintain_pk -p SAPSNCSKERB.pse -v -a C:\pki-certs\sncCert\sapkerb.public.cert
测试安全连接
按照步骤测试安全连接。 成功完成测试后,就可以在生产环境中实施 SNC 了。
在 Power Automate 中创建即时流。
添加
SAP ERP Call Function
操作。将以下 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" }```
使用
STFC_CONNECTION
RFC 功能测试连接。
重要提示
确保您安全地处理私钥,并在完成此设置后将其删除。