2016-04-25 141 views
0

我在这里有一个唯一的问题 - 服务器在我们的控制之下,并且已经使用即将到期的新服务器证书进行了更新。ssl客户端如何接受过期的SSL证书

但是我们客户的性质是这样的,更新SSL证书需要人工干预来设置某些方面,以便他们在此之后启动并运行。我们没有足够的时间进行更改,并且在证书过期之前让所有客户端都运行。

我们正在使用单向SSL,即只有客户端正在验证服务器证书(TCP通信)。

所以我的问题是有什么办法强制客户端接受超过过期日期的证书,所以我们有更多的时间来更新它们?同时我们可以在服务器上进行任何更改,但无法触摸客户端。

我今天运行wireshark跟踪设置系统日期超出证书到期在客户端和服务器上,其抛出certificate_expired客户端我相信在这种情况下,因为服务器已经安装了新的服务器端证书。 通信甚至没有通过SSL/TLS消息的外观,即它在此之前失败。

客户端用C编写,并使用OpenSSL建立SSL连接,服务器用Java编写。

我曾尝试使用各种TrustManagers接受服务器端的一切,但问题是它似乎是客户端。被传输的信息不敏感,如果有任何方法可以这样做,我们可以禁用所有的SSL功能以使其正常工作,但是无论我们可以做什么都必须在不触摸客户端的情况下完成。

让我知道是否需要进一步的细节,使情况更清楚。任何帮助,将不胜感激。

+7

没有。你不能强迫它,除非你能控制客户 - 你已经说过你没有。如果服务器可以强制客户端接受过期的证书,那么服务器也可以强制客户端接受无效/伪造的证书。换句话说,你想要的只是否定ssl的全部目的。 –

+0

有道理,谢谢。 – highflyer

回答

0

您没有这么说,但听起来您正在使用“自签名”证书,并且您担心有时间绕过网络并将服务器的证书添加到每台计算机上的证书存储区。假设是这种情况 - 你有一个非常简单的解决方案...只需切换到商业证书。 Comodo一直都在执行交易,而且通常可以在100美元以下获得一年。他们甚至提供免费的30天试用。 https://ssl.comodo.com/