问题现象
当使用 Go 1.20 及以上版本对 OSS 回调通知进行签名验证时报错crypto/rsa: 512-bit keys are insecure (see https://go.dev/pkg/crypto/rsa#hdr-Minimum_key_size)。
问题原因
在Go 1.20及以上版本中对crypto/rsa包进行了安全策略调整,默认拒绝使用小于 1024 位的 RSA 密钥,并在相应操作中抛出报错。由于OSS回调验签时使用的公钥为512位的RSA密钥,因此导致回调验签失败。
解决方案
通过在GODEBUG中设置rsa1024min=0,使Go运行时恢复到早期版本的行为,即密钥小于1024位时不报错,请通过环境变量添加,例如export GODEBUG=rsa1024min=0。
该文章对您有帮助吗?