首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在调用self服务时信任过期的自签名证书

在调用self服务时信任过期的自签名证书
EN

Stack Overflow用户
提问于 2015-07-02 18:14:10
回答 2查看 4.3K关注 0票数 12

有一个受证书保护的webservice服务。在调用证书的客户端代码中,证书的CA必须出现在信任存储区(JRE_path\lib\security\cacerts)中-如果没有出现,客户端就会出现PKIX异常。

如果证书已过期,会发生什么情况-客户端代码失败。

但是,可以通过将证书直接添加到信任库- Trusting an expired certificate中来绕过此操作

即,如果证书本身而不是CA存在于信任存储中,则即使证书已过期,一切仍可正常工作。

在我的场景中,when服务证书是一个自签名证书,所以无论如何我都必须将它添加到信任库中,即使证书过期了,客户端仍然可以正常工作。

现在我的问题是,这是否适用于所有场景--我的程序只是一个运行本地JRE的命令行程序。

如果有一个应用程序调用not服务,并且该应用程序运行在Websphere、JBoss、WebLogic、Tomcat、Glassfish等上,并且自签名证书被添加到该环境的信任库中,我还能假设它将继续工作(不会给出过期错误)吗?

我假设它会工作-因为那些应用服务器也会像任何程序一样使用JRE -或者我错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2015-07-11 00:39:00

您可以通过以下代码绕过所有证书

代码语言:javascript
运行
复制
try {
            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) {
                }
            } };
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());

            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
            HostnameVerifier allHostsValid = new HostnameVerifier() {
                public boolean verify(String hostname, SSLSession session) {
                    return true;
                }
            };
            SSLContext.setDefault(sc);
            HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
            LOGGER.debug("All Certificates Have Been Trusted Successfully.");
        } catch (KeyManagementException ex) {
            LOGGER.error("Error:",ex);
        } catch (NoSuchAlgorithmException ex) {
            LOGGER.error("Error:",ex);
        } 
票数 1
EN

Stack Overflow用户

发布于 2018-06-08 07:28:30

回答您的问题:“如果我将自签名证书添加到信任存储区,该证书在过期后是否仍然受信任-或者它是否会抛出异常?”

它仍然是可信的(至少在java的cacerts信任库中是这样)。请参阅https://softwareengineering.stackexchange.com/a/308538

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31181816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档