微信开放平台第三方解密失败
微信开放平台第三方解密失败解决
报错信息如下:java.security.InvalidKeyException: Illegal key size
一开始开发时在本地进行的,把相关配置的地址指向了我本地,解密没有问题,当正个模块开放好之后方到了测试环境,(测试环境是由两台服务器组成,通过nginx来进行控制)测试时发现有一台服务112 解密的时候都是失败的,而114 上每一次都是成功的,这个时候看了下官方文档,给出的解决办发是:在官方网站下载 JCE 无限制权限策略文件 然后替换%JAVE_HOME%\jre\lib\security 下的:“local_policy.jar” 和“US_export_policy.jar” 这两个jar ,按照要求下载相关版本的jar :
1:注释掉nginx 上114上的服务,使每次请求都下下发到112 上
2:发现112 上的服务还是失败,猜想是不是需要重新启动服务之类的
3:执行source /etc/profile :使jdk 环境变量生效并重新启动微服务
4:继续观察微服务 发现微信第三方下发的请求,服务还是解密失败。
5:查看114服务器上 解密成功的jdk 版本,发现是open_jdk 1.8.-(具体的小版本号忘记了)此时我突然懵逼了,因为112 和114 上的jdk 应该都是1.8.144 ,查看两台环境上的jdk环境变量发现所指向的版本是一样的。那么114 java -version 版本号和114 不一样的原因那么就是open jdk 影响的了,卸载open jdk 且执行:source /etc/profile 然后运行java -version 命令,发现和114 和112 上的jdk版本一致了,然后把nginx 上112的服务注释,使每次请求都到114 上来,后观察114 上的服务发现,解密和112 上一样都解密失败了且报错一致都是:java.security.InvalidKeyException: Illegal key size
6:回想了一下,一开始是114成功,112失败,发现jdk 版本不一致,修改一致后都失败了,然后查看卸载open jdk 的命令,发现opek jdk 小版本上比我高了一点点
7:去官网下载jdk8 最新的版本:jdk-8u311-linux-x64.tar.gz 重新配置测试环境jdk 环境变量使之对应新版本
8:此时发现两台服务中的第三方解密请求都成功了。(忘记有没有重新启动微服务 方便的话重启下看看下效果)
注:有些忘记的小细节是因为元旦前解决的问题,这个问题改好之后我就下班做高铁回家了。。。。节4号想起来记录下。。。
山有木兮木有枝,心悦君兮君不知。