gpt4 book ai didi

java - 启用 Java 以允许过期的证书

转载 作者:搜寻专家 更新时间:2023-10-31 19:53:17 30 4
gpt4 key购买 nike

是否有任何命令行标志使 Java 能够允许过期的证书?

现在我收到以下异常,因为证书已过期。

Caused by: java.security.cert.CertificateExpiredException: NotAfter: {PAST DATETIME}
at sun.security.x509.CertificateValidity.valid(CertificateValidity.java:274)
at sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:629)
at sun.security.x509.X509CertImpl.checkValidity(X509CertImpl.java:602)
at org.apache.ws.security.validate.SignatureTrustValidator.validateCertificates(SignatureTrustValidator.java:103)

我已经尝试了以下不忽略证书过期检查的命令行标志

-Dcom.sun.net.ssl.checkRevocation=false

我们的应用程序在路径 /myapplication 下的 tomcat 中运行。所以我创建了另一个应用程序 /ignorecertificate 并部署在同一个 Tomcat 的 webapp 文件夹中。根据此 question 中接受的答案,我在 /ignoreexpired 应用程序启动时运行以下代码。

// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(
java.security.cert.X509Certificate[] certs, String authType) {
}
}
};

// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}

由于两个应用程序都部署在同一个 tomcat 中,我希望 /myapplication 忽略证书过期检查/异常(因为两个应用程序共享同一个 java 实例)。但它仍然不起作用。我在另一个应用程序 (/ignoreexpired) 中运行此忽略代码,因为我不想在我当前的应用程序 (/myapplication) 中进行任何更改。

最佳答案

-Dcom.sun.net.ssl.checkRevocation=false

此选项(带有一些额外配置)允许在线检查证书颁发者的证书吊销状态。不是您要查找的内容。

Since both applications were deployed in same tomcat, I expected /myapplication to ignore certificate expiration check / exception

应用程序在不同的 JVM 上下文中运行。 /ignoreexpired 应用程序的 TrustManager 中的更改不会影响另一个应用程序。

您可以将过期的证书包含在 JVM 使用的信任库中。我认为 TrustoreManager 不会检查明确包含在信任库中的证书是否过期。使用 keytool 或 GUI 创建 JKS KeyStore explorer ,插入证书(最终证书,不是root),通过

在tomcat中全局使用
-Djavax.net.ssl.trustStore=/path/to/truststore
-Djavax.net.ssl.trustStorePassword=truststorepassword

您还可以更新位于 jre/lib/security/cacerts 的默认 JVM 信任库

关于java - 启用 Java 以允许过期的证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38143395/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com