code换取openid和session_key错误

原先已经调试好的微信小程序登陆 使用 code 换取 openid 和 session_key时报错:

(而且时测试环境没有此类问题,但是生产环境才有此错误)

org.springframework.web.client.ResourceAccessException I/O error on GET request for "https://api.weixin.qq.com/sns/oauth2/access_token": nested exception is javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake

 多次调用时,发现重复出现上面的错误和如下错误:其中打印日志下面三个参数的字节数组都有数据;但返回值null

String decryptToString(String base64EncryptedData, String base64SessionKey, String base64Iv)

 

 通过日志可以看出,程序没有走:LOGGER.debug("WeixinAESUtils byte[] decrypt: 没有调用这里3。。。?"); 这一句...

排查了好久,依然找不到问题之所在,待解决问题后继续更新

    最终找到原因:原来是交代运维部署的环境配置有遗漏,导致环境配置不一致!!! 真是坑爹了呀!!

 

附上部署注意事项:

# 部署注意事项
1. 代码中使用了```SecureRandom.getInstance("SHA1PRNG")```用于生成安全密钥,在sun/oracle的jdk里,这个算法的提供者在底层依赖到操作系统提供的随机数据,在linux上,与之相关的是/dev/random和/dev/urandom,前者阻塞的,后者是非阻塞的,应配置JDK使用非阻塞算法
```
cd $JAVA_HOME/jre/lib/security
vim java.security

securerandom.source=file:/dev/./urandom
```
参考文档:https://hongjiang.info/jvm-random-and-entropy-source/

2. 代码中使用了AES对称加解密算法,依赖于BouncyCastleProvider,需添加到java.security中:
```
cd $JAVA_HOME/jre/lib/security
vim java.security

# 数字10按配置文件中实际数值,按已配置的最大值加1,并非固定数值
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
```
同时,需要添加 bcprov-jdk16-146.jar, bcmail-jdk16.143 到 $JAVA_HOME/jre/lib/ext
参考文档:https://blog.csdn.net/u012454773/article/details/78841692

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值