基于Go 1.20及以上版本验证OSS回调签名报错512-bit keys are insecure

问题现象

当使用 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