最近、Google AppsforGovサービスのGoogleAppsScriptでのSSL信頼の処理方法に変更が加えられたことが原因と思われるバグに遭遇しました。いくつかのAppsScriptシステムがあります(特に2つはサーバー監視システムと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ルートCA-2」証明書に接続しているすべてのサーバーが失敗しているだけで十分です。これは私たちにとって大きな問題です。
サーバーモニタリングでは、Apps ScriptでSSL検証を無効にすることで一時的にこれを回避できましたが、そのオプションはWebサービスにアクセスできません[編集:SoapServiceを使用してWSリクエストとリターンを処理しています]。この問題が発生している限り、これらのツールを引き続き使用します。ただし、関連する変更がいつ発生したかを正確に特定できることを考えると、Googleが少なくとも(比較的)迅速に何が発生したかを特定できることを願っています。
役立つ場合は、エンドポイントでSSL証明書を信頼できるかどうかに基づいて成功/失敗をログアウトする簡単なGoogleAppsScript関数を以下に示します。
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?");
}
}