alipay
alipay copied to clipboard
打包成容器后报错误:crypto/rsa: verification error
在本地系统可以正常响应(windows和ubuntu)都试过。但是打包成容器(alpine为基础镜像)的时候报crypto/rsa: verification error;是否需要装其他库
公钥和密码改成每行64字符也会报错
如果你用的 v3 ,是不是证书文件没有同步到 容器里面去。
用的是普通公钥方式,私钥和公钥都是正确的。 另外发现容器在docker下是正常的,如果部署到k3s下就会出现那个错误
这样就太神奇了。。
我在其它情况遇到了crypto/rsa: verification error
错误,引起的原因是这样的:
- notify.go中的函数
GetTradeNotification
中调用了VerifySign(req.Form
),在大多数情况是正常的; - 如果notify_url中带有query参数,建议使用VerifySign(
req.PostForm
),因为req.Form会多出query参数,导致验签失败
不知道k3s下是否会在notify_url上附着了其它参数,导致req.Form数据增加,从而引发crypto/rsa: verification error
。仅供参考。
我的临时解决办法:
- 在调用
GetTradeNotification
前,我会修改req.ParseForm()
用到的query信息,比如- req.URL.Path = "/"
- req.URL.RawPath = "/"
- req.URL.RawQuery = ""
- 以保证GetTradeNotification()中的
VerifySign(req.Form)
正常验签
@smartwalle @rosbit 同样遇到这个问题
@sharper 参考 @rosbit 提供的方法试试