如果对API签名不了解,可先阅读微信文档 服务端API签名指南
有API数据加密与签名两种功能,此处按照微信文档,简称为签名。
WxMaConfig类增加了几个属性,分别对应小程序内设置的签名密钥等。
这4个属性需要按照小程序后台设置。
在小程序后台,开发管理 -> 开发设置 -> API安全处,可以看到如下图界面。
上图中A处对应 apiSignatureAesKeySn; B处对应apiSignatureAesKey; C处对应apiSignatureRsaPrivateKeySn
apiSignatureRsaPrivateKey 在上图中无对应,C处右侧是公钥,apiSignatureRsaPrivateKey 需要的是私钥。
可点击图上右上角的修改,打开如下图的设置页面
首先确保对称密钥选中 AES256,非对称密钥选中RSA。不要选SM4和SM2。 (如果需要支持SM4/SM2,可修改BaseWxMaServiceImpl.java中postWithSignature方法中相应部分实现)。
在API非对称密钥中下方左侧有个「随机生成密钥对」,点击它,然后点它右侧的「下载私钥」,之后点击「确认」保存。 下载得到的文件是PKCS1格式的私钥,用openssl可转成PKCS8格式。apiSignatureRsaPrivateKey 需要设置的是PKCS8格式的私钥。
注意:
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in PKCS1格式密钥文件名 -out 新的PKCS8格式密钥文件名