wechatpay-apiv3 / wechatpay-java

微信支付 APIv3 的官方 Java Library
Apache License 2.0
870 stars 195 forks source link

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

Closed Hitvz closed 11 months ago

Hitvz commented 11 months ago

错误描述

报错堆栈如下: 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

JhonTitor6 commented 11 months ago

我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

xy-peng commented 11 months ago

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