dromara/payment-spring-boot

部分JDK报java.security.InvalidKeyException: Illegal key size

NotFound403 opened this issue · 4 comments

Caused by: cn.felord.payment.PayException: java.security.InvalidKeyException: Illegal key size
at cn.felord.payment.wechat.v3.SignatureProvider.decryptResponseBody(SignatureProvider.java:263) ~[payment-spring-boot-autoconfigure-1.0.4.RELEASE.jar!/:na]
at cn.felord.payment.wechat.v3.SignatureProvider.lambda$refreshCertificate$0(SignatureProvider.java:220) ~[payment-spring-boot-autoconfigure-1.0.4.RELEASE.jar!/:na]
at java.lang.Iterable.forEach(Iterable.java:75) ~[na:1.8.0_131]

对于密码,很多国家是限制出口的,因此你可能使用了受限制的JDK,尤其是Oracle的JDK。解决方案:

前往甲骨文官网下载JCE无限制权限策略文件,例如JDK8:

https://www.oracle.com/java/technologies/javase-jce8-downloads.html

下载下来后对文件进行解压发现其中有两个jar包,将其复制并覆盖你自己的%JAVA_HOME%/jre/lib/security下的local_policy.jar 和 US_export_policy.jar

注意:覆盖之前最好将原来的local_policy.jar 和 US_export_policy.jar 备份

或者更换为Open JDK 也可以突破限制

jdk8 151之前需要替换jar包,151版本以后,只需要手动开启配置,找到jre路径,找到java.security文件,去除crypto.policy=unlimited注释(约826行)

jdk8 151之前需要替换jar包,151版本以后,只需要手动开启配置,找到jre路径,找到java.security文件,去除crypto.policy=unlimited注释(约826行)

该文件在 jre\lib\security,亲测通过