Open JDK 17,Too short at java.base/sun.security.util.DerValue.<init>(DerValue.java:361) 如何解决
时间: 2023-12-24 10:04:17 浏览: 30
这个错误通常是由于证书问题导致的。建议您尝试以下解决方法:
1. 更新证书库:您可以通过更新证书库来解决该问题。您可以使用以下命令更新证书库:
```
sudo update-ca-certificates -f
```
2. 检查证书:您可以检查证书是否存在问题。您可以使用以下命令检查证书:
```
keytool -list -v -keystore $JAVA_HOME/lib/security/cacerts
```
如果您发现证书存在问题,可以使用以下命令删除证书:
```
sudo keytool -delete -alias <证书别名> -keystore $JAVA_HOME/lib/security/cacerts
```
然后再次运行上述命令以检查证书是否已成功删除。
3. 升级到最新的Open JDK版本:如果您使用的是旧版本的Open JDK,则可能会遇到此问题。建议您升级到最新版本的Open JDK。
相关问题
如何将nimbus-jose-jwt 版本9.x JWK 转换成 X509Certificate,Open JDK 17,Too short at java.base/sun.security.util.DerValue.<init>(DerValue.java:361) 如何解决
您可以尝试使用以下代码将JWK转换为X509Certificate:
```java
import com.nimbusds.jose.jwk.RSAKey;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.RSAPublicKeySpec;
public static X509Certificate jwkToX509(RSAKey jwk) throws Exception {
RSAPublicKeySpec spec = new RSAPublicKeySpec(jwk.getModulus(), jwk.getPublicExponent());
PublicKey publicKey = KeyFactory.getInstance("RSA").generatePublic(spec);
byte[] derEncoded = publicKey.getEncoded();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
return (X509Certificate)cf.generateCertificate(new ByteArrayInputStream(derEncoded));
}
```
如果您在运行时遇到“Too short at java.base/sun.security.util.DerValue.<init>(DerValue.java:361)”的错误,请确保您的JWK中的公钥长度不小于2048位。如果公钥长度小于2048位,则可能会导致此错误。
java.lang.reflect.invocationtargetexception at java.base/jdk.internal.refle
java.lang.reflect.InvocationTargetException是一个Java运行时异常,通常会在反射调用Java方法时抛出。该异常通常是由于调用方法失败或方法本身抛出异常而引起的。
java.base/jdk.internal.reflect.InvocationTargetException是指该异常由jdk基础类库中的内部反射机制引起。在调用Java方法时,如果出现了像IllegalArgumentException或NullPointerException等异常,这些异常将被封装在InvocationTargetException中,并由反射调用代码重新抛出。
通常,开发者可以通过调用Throwable.getCause()方法来获得该异常的根本原因,以便定位问题所在。进行反射调用时需要特别小心,应该确保反射调用参数的正确性,以避免发生此类异常。
总之,java.lang.reflect.InvocationTargetException异常通常由Java反射API引起,可能是方法调用失败或方法本身抛出异常引起的。定位问题需要仔细检查异常日志并确认反射调用的参数是否正确。