此文章仅记录个人排查问题的过程以及思路:
目前一共应用在代码未进行核心改动的情况下,进行了发布系统的迁移。迁移后出现了数据签名验证失败的问题。
遇到此问题,首先进行的数据分析,验证签名的输入和密钥没有变化,但是密钥检测出现错误。通过对比之前的发布系统,发现相同的代码仅在新的发布系统出现了问题,因此开始进行相关排查。
首先通过jinfo命令查询jvm属性,发现file.encoding设置设置未ANSI_X3.4-1968,而服务CentorOS机器LANG是UTF8,因此需要排查file.encoding设置逻辑。
团队发布系统使用的是salt机制进行的运维部署,根据信息确认到salt运行指令是LANG使用的Master的系统环境,并不是服务运行环境的系统环境,导致了该问题。
后续使用了-Dfile.encoding强制指定java运行的file.encoding解决。