wechatpay-apiv3/wechatpay-java

线上报错:java.lang.IllegalArgumentException: java.security.InvalidKeyException: Illegal key size

Closed this issue · 2 comments

Hitvz commented

错误描述

报错堆栈如下:
java.lang.IllegalArgumentException: java.security.InvalidKeyException: Illegal key size
at com.wechat.pay.java.core.cipher.AbstractAeadCipher.decrypt(AbstractAeadCipher.java:83)
at com.wechat.pay.java.core.certificate.AbstractAutoCertificateProvider.decryptCertificate(AbstractAutoCertificateProvider.java:157)
at com.wechat.pay.java.core.certificate.AbstractAutoCertificateProvider.downloadAndUpdate(AbstractAutoCertificateProvider.java:122)
at com.wechat.pay.java.core.certificate.AbstractAutoCertificateProvider.(AbstractAutoCertificateProvider.java:89)
at com.wechat.pay.java.core.certificate.AbstractAutoCertificateProvider.(AbstractAutoCertificateProvider.java:49)
at com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider.(RSAAutoCertificateProvider.java:32)
at com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider.(RSAAutoCertificateProvider.java:21)
at com.wechat.pay.java.core.certificate.RSAAutoCertificateProvider$Builder.build(RSAAutoCertificateProvider.java:111)
at com.wechat.pay.java.core.RSAAutoCertificateConfig$Builder.build(RSAAutoCertificateConfig.java:114)

重现bug的步骤

构建config的时候,执行build方法时报错。
config = new RSAAutoCertificateConfig.Builder()
.merchantId(merchantId)
.privateKey(privateKey)
.merchantSerialNumber(merchantSerialNumber)
.apiV3Key(apiV3key)
.httpClientBuilder(httpClientBuilder)
.build();

预期行为

能更改实现方式么解决么,比如使用第三方库实现这个逻辑,这个不知道是否能行,只是提一下

导致错误的代码片段

No response

操作系统

centos 7

Java 版本

java 1.8.0_141-b15

wechatpay-java 版本

0.2.11

其他信息

No response

我issue写一半呢,我也遇到了,不过我解决了
也不算是bug,记录一下
简单的说异常是由于jdk版本低于1.8.0_151(也有说是1.8.0_161)引起的,
两种解决方案:

  1. 升级jdk
  2. 下载并替换JCE 策略文件,在代码中加如下片段:
Security.setProperty("crypto.policy", "unlimited");

参考文档:
https://www.baeldung.com/jce-enable-unlimited-strength
https://docs.oracle.com/cd/E60058_01/PDF/8.0.6.x/8.0.6.0.0/AG_HTML/Enabling_Unlimited_Cryptographic_Policy_for_Java.htm

解决方案可参考文档中心的常见问题