4

我们最近遇到了一个错误,该错误似乎是由于 Google 在 Google Apps for Gov 服务上处理 Google Apps 脚本中 SSL 信任的方式发生了变化而引起的。我们有一些 Apps Script 系统——特别是两个是服务器监控系统和基于 Web 服务的日历同步工具——它们通过 SSL 连接与我们端的服务器进行通信。这几个月来一直运行良好,直到 2012 年 9 月 20 日晚上 9 点 15 分,几乎所有这些(和类似的)连接都开始失败,因为无法信任对我们来说是强制性的 DOD 签名证书东西的。

更奇怪的是,这有点不一致——也就是说,我可以成功地要求谷歌连接到https://usuportal.usuhs.mil并且它加载得很好。但是,如果我尝试以下任何一种:

https://www.us.army.mil

https://www.nps.edu

https://www.disa.mil

https://learning.usuhs.edu

......他们都失败了。我怀疑这与某些服务器将自己绑定到的根证书有关,足以让所有将“DOD Root CA-2”证书作为终结者绑定到失败 - 对我们来说是一个真正的问题。

对于我们的服务器监控,我们已经能够通过在 Apps Script 中禁用 SSL 验证来临时解决这个问题,但是该选项不可用于访问 web 服务 [编辑:我们正在使用 SoapService 处理 WS 请求和返回],让我们无法只要存在此问题,就可以继续使用这些工具。不过,鉴于我们可以准确识别相关变化何时发生,我希望谷歌至少(相对)能够快速查明发生了什么。

如果它有帮助,下面是一个快速的 Google Apps 脚本功能,它将根据它是否能够信任端点的 SSL 证书来注销成功/失败。

function checkSSL()
{
// The server to go look at to see if we can trust it.
// Again, usuportal.usuhs.mil has been observed to work; all others tested have failed
//
var serverToTest = "https://www.disa.mil";

// options defines the options which will be used by the UrlFetchApp to define its behavior.
// In this case, we may be interested in disabling SSL validation.
//

var options =
{
    "validateHttpsCertificates" : false
};

// First, try without disabling validation
//
try {
    response = UrlFetchApp.fetch(serverToTest);
    Logger.log("I was able to reach " + serverToTest +" without disabling certificate validation.");
}
catch (e)
{
    // Logger.log(e.toString());
    Logger.log("I was not able to reach " + serverToTest +" without disabling certificate validation.");
}

// Now let's try it with validation disabled
//
try {
    response = UrlFetchApp.fetch(serverToTest, options);
    Logger.log("I was able to reach " + serverToTest +" with certificate validation disabled.");
}
catch (e)
{
    // Logger.log(e.toString());
    Logger.log("I was not able to reach " + serverToTest +" with certificate validation disabled. Maybe it's really just down?");
}
}
4

1 回答 1

1

请将此记录在问题跟踪器中。我已经能够在内部深入研究这一点,这实际上是我们认为的问题。将其登录到问题跟踪器后,您将能够跟踪此问题的进度。

我们可能会通过为 SoapSerivce 添加类似的“validateHttpsCertificates”标志来解决这个问题,就像 UrlFetchApp

于 2012-10-22T13:04:16.853 回答