本指南将向您展示如何在 SAP NetWeaver Application Server (ABAP) 上生成 CSR(证书签名请求)。在 SAP 中,您并非通过配置文件或一次性的 OpenSSL 命令来创建请求。相反,您需要基于 PSE(Personal Security Environment,个人安全环境)进行操作:在信任管理器(事务 STRUST)中,您选择或创建 SSL 服务器 PSE,设置主题详细信息,然后使用创建证书请求来生成 CSR。当您需要显式控制 Subject Alternative Names(主题备用名称)时,也可以使用 sapgenpse(SAP CommonCryptoLib 的一部分)在操作系统层面生成请求。
生成 CSR 代码之前
在 SAP 中,CSR 是从 PSE(个人安全环境)生成的,该容器同时保存着匹配的私钥。在 ABAP 系统上,您需要在信任管理器(事务 STRUST)中完成此操作。您也可以使用 SAP CommonCryptoLib 中的 sapgenpse 在操作系统层面生成 CSR。无论采用哪种方式,私钥都会与请求一同创建,并保留在服务器上的 PSE 内:私钥永远不会成为您发出的 CSR 的一部分。
首先确定您需要多少个请求。如果您使用实例专属的 SSL 服务器 PSE,则需要为每个应用服务器分别生成一个 CSR。如果您使用单一的系统级 SSL 服务器 PSE(例如SSL server Standard),则一个 CSR 即可覆盖整个系统。
在开始之前,您需要准备好以下信息,因为它们将写入请求的主题(可分辨名称)中:
- 通用名称(CN):您要保护的确切主机名(FQDN),例如 shop.example.com,或通配符如 *.example.com。
- 组织(O):您公司的法定名称。
- 所在地(L)、州或省(S / SP)以及国家(C):您所在的城市、完整拼写的地区名称,以及两字母的国家代码。
- 密钥长度:使用 RSA 2048 位或更大的密钥。公共证书颁发机构会拒绝小于 2048 位的密钥。
如果您希望在服务器之外生成请求及其私钥,我们的CSR 生成器可以在您的浏览器中同时生成这两者。请选择最适合您工作流程的方法,然后在提交 SSL 订单时提交生成的 CSR。
ABAP 方法:STRUST(信任管理器)
这是在 SAP NetWeaver AS ABAP 上生成 CSR 的标准方式。请在 SAP GUI 中执行以下步骤,如果 PSE 树处于只读状态,请切换到更改模式。
步骤 1:打开信任管理器
在 SAP GUI 中,运行事务 STRUST 以打开信任管理器。
步骤 2:选择或创建 SSL 服务器 PSE
在左侧的树形结构中,选择SSL server PSE。选择您实际用于服务的 PSE:系统级的SSL server Standard,或实例专属的服务器 PSE。双击它以打开。
如果尚未存在 PSE,或您正在替换当前的 PSE,请右键单击该节点并选择创建(或替换)。这将打开创建/替换 PSE 对话框,您可以在其中输入下面所述的主题(DN)字段。
步骤 3:输入主题(DN)字段
填写您的组织详细信息。这些信息将成为证书的可分辨名称:
- CN(通用名称):您要保护的确切主机名(FQDN),或通配符如 *.yourdomain.com。
- O(组织):您公司的法定名称,例如 Your Company LLC。
- OU(组织单位):该字段已被 CA/浏览器论坛弃用,因此请留空或输入 NA。
- L(所在地/城市):例如 Atlanta。
- S / SP(州/省):需完整拼写,例如 Georgia。
- C(国家):两字母的国家代码,例如 US。
将密钥长度设置为 2048 位或更长,然后确认。SAP 将创建 PSE 及其私钥。
步骤 4:创建证书请求
选中 SSL 服务器 PSE 后,选择创建证书请求。SAP 会以 Base64(PKCS#10)格式生成 CSR。在对话框中,复制完整的请求文本,包括 —–BEGIN CERTIFICATE REQUEST—– 和 —–END CERTIFICATE REQUEST—– 这两行,或将其保存为文件。这就是您要提交给证书颁发机构的内容。
关于 SAN(主题备用名称)的说明:现代客户端会根据 SAN 扩展而不是通用名称来验证主机名。部分 STRUST 版本没有提供 SAN 字段。较新的技术栈提供了替换向导(需要 SAP Note 2414090)来引导您完成此操作。如果您的界面没有添加 SAN 的选项,请使用下面的命令行方法,它可以让您显式设置 SAN。
命令行方法:sapgenpse(显式 SAN)
当您必须确保 CSR 中包含 SAN,或者您的界面未提供 SAN 字段时,可使用此方法。这需要支持 SAN 的 SAP CommonCryptoLib(8.4.42 及更高版本已支持并有相关文档)。首先为您的平台设置好环境变量,包括 SECUDIR,以便工具能够找到 PSE 目录。
下面的示例将创建或刷新 PSE,并写入一个包含两个 SAN 条目的 CSR。请在存放 sapgenpse 的目录中运行该命令,并将主机名和 DN 替换为您自己的值:
sapgenpse get_pse -p SAPSSLS.pse -x
-a sha256WithRsaEncryption -s 2048
-k GN-dNSName:example.com -k GN-dNSName:www.example.com
"CN=example.com, OU=NA, O=Your Company LLC, L=Atlanta, SP=Georgia, C=US"
-r server.csr
各选项的作用如下:
- -p SAPSSLS.pse 指定 PSE 文件名称,-x 会提示您输入其 PIN 码。
- -a sha256WithRsaEncryption 将签名算法设置为 SHA-256,-s 2048 将密钥长度设置为 2048 位。
- 每一个 -k GN-dNSName: 条目都会向 SAN 扩展添加一个 DNS 名称。对于证书需要覆盖的每个主机名,都需重复添加。
- -r server.csr 将请求写入一个文件,您可以打开并复制该文件的内容。
某些 SAP 界面,例如 Web Dispatcher PSE Management,也没有提供 SAN 字段。在这种情况下,SAP 官方的建议是使用这种命令行方式在界面之外生成 CSR。
验证并提交 CSR
在提交之前,最好确认请求中包含您预期的值。您可以在 STRUST 中查看该请求,将其粘贴到我们的在线CSR 解码器中,或在任何安装了 OpenSSL 的计算机上对其进行解码:
openssl req -noout -text -in server.csr
检查通用名称、组织详细信息、密钥长度以及任何 SAN 条目是否正确。当一切确认无误后,将 CSR 内容复制到 SSL 订单中相应的输入框中。在证书颁发机构验证请求并颁发证书后,请继续参考SAP SSL 安装说明,将响应导入回 PSE 并重启 ICM。
常见问题
在 SAP NetWeaver AS ABAP 中,运行事务 STRUST 以打开信任管理器。选择 SSL 服务器 PSE,然后选择创建证书请求。SAP 会以 Base64 格式生成 CSR,您可以复制并将其发送给证书颁发机构。另外,您也可以使用 sapgenpse 在操作系统层面生成该请求。
PSE(个人安全环境)是 SAP 用来存储密钥对及相关证书的安全容器。SSL 服务器 PSE 保存着应用服务器通过 HTTPS 提供的私钥和服务器证书。当您创建证书请求时,私钥会在 PSE 内部生成并保留在其中:私钥永远不会包含在您发送给 CA 的 CSR 中。
部分 STRUST 界面没有包含 SAN 字段。较新的技术栈增加了替换向导(需要 SAP Note 2414090)来处理 SAN。如果您的界面没有提供 SAN 选项,请改用 sapgenpse 命令行方法生成请求,并为每个主机名添加一个 -k GN-dNSName: 条目。SAN 支持需要 SAP CommonCryptoLib 8.4.42 或更高版本。
这取决于您的 PSE 设置方式。如果您使用单一的系统级 SSL 服务器 PSE,例如SSL server Standard,那么一个 CSR 即可覆盖整个系统。如果每个实例都有各自的 SSL 服务器 PSE,则需要为每个应用服务器分别生成一个 CSR。


