错误信息:
java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)
at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DHKeyPairGenerator.java:120)
at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:675)
at sun.security.ssl.DHCrypt.<init>(DHCrypt.java:128)
at sun.security.ssl.DHCrypt.<init>(DHCrypt.java:114)
at sun.security.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:706)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:265)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:961)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:897)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1033)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1342)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1369)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1353)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
原因:
调用腾讯云人脸识别服务,在获取AccessToken时自己的客户端抛出该异常,服务上线后没做过变动,突然报这个错误怀疑腾讯云那边java版本变更了。但最后对接人反馈也是什么都没有做,这就很奇怪了。
查看本地java版本:

查看 环境变量,java使用的并发设置的java版本
![]()
先把java版本换成自己设置的版本再看看情况,尽量不要用自带的,由于环境变量都设置了,但java还是使用自带的,应该是做了链接:

确认是加了链接,那再加个自己的java版本:

若需要删除:update-alternatives --remove java $JAVA_HOME/bin/java
切换到自己的java版本后,重启服务,接口能正常调用了,由于之前用的自带的java版本没有报错,而最近却突然报错了,经测试,本地客户端换了java版本能正常。
博客内容讲述了在调用腾讯云人脸识别服务时遇到的Java安全异常,异常信息为`InvalidAlgorithmParameterException`,指出DH密钥大小必须是64的倍数且在512到1024之间。作者怀疑是腾讯云Java版本变动引起,但最终发现是本地Java版本与系统默认版本冲突。通过切换到自定义的Java版本并更新环境变量,成功解决了问题,接口恢复正常。
2183

被折叠的 条评论
为什么被折叠?



