Enable Java to permit expired certificate(启用Java以允许过期证书)
问题描述
是否有使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
由于两个应用程序都部署在同一Tomcat中,我预计/myapp会忽略证书过期检查/异常
应用程序在不同的JVM上下文中运行。/ignoreexpired
应用程序的TrustManager
中的更改不会影响另一个应用程序。
您可以将过期的证书包含在JVM使用的信任存储中。我认为TrustoreManager
不会检查信任存储中明确包含的证书的过期时间。使用KeyTool或图形用户界面KeyStore explorer创建JK,插入证书(最终证书,而不是根证书),并通过
-Djavax.net.ssl.trustStore=/path/to/truststore
-Djavax.net.ssl.trustStorePassword=truststorepassword
您还可以在jre/lib/security/cacerts
这篇关于启用Java以允许过期证书的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:启用Java以允许过期证书
基础教程推荐
- Java:带有char数组的println给出乱码 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- 降序排序:Java Map 2022-01-01