用上上签给客户的私钥进行数据签密,上上签给客户的私钥类似:
IIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCJChWJQvFkalhg
比较长,不全部贴出来,做测试的话可以登录 上上签开放平台_签约工具系列-上上签电子签约云平台 其中,在常用工具下,有RSA公钥私钥生成器,可以生成私钥。
SAP服务器上生成PSE文件
本部分中的操作通常需要basis协助,因为踩了点坑,我自己登录SAP服务器,去生成了.pse文件,过程参照另外两个大师,我也顺便把脚本和注意事项贴出来:
1. 登录服务器,切换到/tmp文件,并创建子目录rsa(随便叫什么名字都可以)
cd /tmp
mkdir rsa
2. 如果对命令行比较熟悉,可以直接在/tmp/rsa下创建一个类似文本文件的东西,比较其他两位大师提到的,就叫 rsa.key 好了,然后把私钥放进去,放私钥的时候有个讲究,就是每一行的长度是固定的,不能都放在一行上,否则 执行命令openssl req -new -x509 -sha256 -key rsa.key -out user3.cer -days 3650 -subj '/CN=user3'的时候就提示找不到private key,具体的长度应该是这样的:
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCJChWJQvFkalhg
每一行都是固定长度,私钥很长,需要分切成这么长的如果段,每一段后面放一个回车。
因为本人对这个不熟悉,所以还是老实在ABAP上写一个文件:
lv_pubbase64 =
'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCJChWJQvFkalhg' && cl_abap_char_utilities=>cr_lf+1(1) &&
'baxW9FsWVACer5Gzn/yoLj3gv1Cyjx7lRBx20YVoJau7HiUqFTuzHyStHrx+5bAj' && cl_abap_char_utilities=>cr_lf+1(1) .
这里没有贴全,还有一部分,太长了,编辑实在不方便。
OPEN DATASET lv_pubkeyfile FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
TRANSFER lv_pubfieltext TO lv_pubkeyfile.
CLOSE DATASET lv_pubkeyfile.
3.生成证书
openssl req -new -x509 -sha256 -key rsa.key -out user3.cer -days 3650 -subj '/CN=user3'
注意,这里/CN是必须的,CN签名要加/,否则检查通过不了。
系统提示输入密码,可以按回车忽略,这一步ok了,后面几步就按部就班。
4.生成pfx文件
openssl pkcs12 -export -inkey rsa.key -in user3.cer -out user3.pfx -nodes
5.setenv SECUDIR
setenv SECUDIR /tmp/rsa
6.生成pse文件
sapgenpse import_p12 -p user3.pse user3.pfx
7. 把user3.pse文件copy到/usr/sap/FED/DVEBMGS00/sec 下,因为这个路径才是环境变量默认的
第三部分 ABAP上对字符串进行签密并调用上上签的合同模板列表接口请查看下一篇