クラウド、責任、およびSSL証明書に関する予期しない状況

クラウドプラットフォームについて議論するとき、プラットフォームの信頼性とその問題に対するプロバイダーの責任についての疑問が自然に生じます。 同時に、ユーザーの期待は最高です-すべてが1日25時間、週9日、年中無休で完全に機能するはずです。 現実の世界では、あらゆる種類の問題が発生します。外部電源をオフにするとき、予備電源への移行が機能しない とき、タンクの底にディーゼル燃料の凝縮水(水)があり、 2月29日に「1年で」1年の増加で計算されます



問題のリストの最後の場所がSSLの証明書で占められているわけではありません。 たとえば、一部のクラウドサービスの証明書が予期せず完全に期限切れになる場合があります。



誰が責任を負い、何をすべきか?



あなたは例のために遠くに行く必要はありません-これは誰にでも起こる可能性があります。 2013年2月末に、Windows Azureストレージサービスの3つの証明書が一度に期限切れになりました。 混osと一連の破壊が続きました;英語のサイトはこれについて多くを書きました。 一般に、証明書の置き換えは事前に計画され、ほぼ完全に完了しました。 ここでは、なぜ交換が最後まで行われなかったのかを説明し、同時に、すでに手遅れになった瞬間まで誰も何も気づかなかった。 少なくとも叙事詩三部作のシナリオとして読むことを強くお勧めし、手の曲率半径に関するコメントを残す前に必ず読んでください。



この状況を詳しく見てみましょう。 X時間後、これら2つの投稿が表示されました: onetwo 証明書の対象となるURLと証明書の有効期間を示す特定のスクリーンショットがあります。 このようなもの(ここにあるのは、新しい証明書と別のプログラムのスクリーンショットのみです):







このスクリーンショットはどこから来たのですか? たぶん、これはスーパープログラムのエンタープライズ版のスクリーンショットであり、レベル80から始まる管理者のみが利用でき、ライセンスは100,500ドルですか?



次の実験を試してみましょう。 以下で説明することは、多くの人にとって些細なことであると思われますが、非常に多くの専門家が、ソフトウェアのこのような超越的な可能性を認識していなかったことがわかります。 だから...



最も一般的なブラウザを使用してください。 Ognelis 20が適しています。コントロールの場所のみがブラウザの選択に依存します。 空のタブを作成し、アドレスバーにgithub.comなどを入力します。GitHubメインページが開くと、アドレスバーは次のようになります。







城の画像と碑文「GitHub、Inc.」があります。 (米国)。」 この碑文をマウスで突くと、ボタンのあるフォームが表示されます。







ボタンをクリックすると、詳細が表示されたフォームが表示され、とりわけ「証明書の表示」ボタンが表示されます。







このボタンをクリックしてください...非常に予期しない...







...特定の証明書用に調整された、最初のスクリーンショットとまったく同じ形式。



そのため、完全に任意の時点で、github.com証明書は2013年7月末まで有効であることがわかりました。 特別な特権や特別なソフトウェアは必要ありませんでした。 そして最も重要なことは、すべての必要な情報が絶えず-毎日、24時間体制で-目に見えないことでした。



読者はすでに、「他の人のサービスの証明書の有効期限を確認する必要があるのはなぜか」という皮肉な質問を熱望しています。 実際、なぜ「これは私たちの証明書ではない」のですか?



証明書の有効期限が切れるとどうなるかを見てみましょう。 一部のサイトには、たとえば2月30日まで有効な証明書がありました。 すべてのブラウザおよびその他のプログラムは、このサイトへの安全な接続を喜んで確立しました。 突然2月31日になり、証明書の有効期限が切れました。 何が変わった? 暗号化キーは依然としてキーであり、証明書の署名はまだ証明書と一致しています。 有効性のポイントは何ですか?



正式には、その意味は非常に単純です。証明書の有効期限が切れると、証明書が失効したかどうかを確認できなくなります。 したがって、サーバーへの接続を確立することはできますが、証明書が取り消されている可能性があり、これを確認することはできません。 もう1つの理由があります。証明書は通常、サードパーティの会社によって発行され、新しい証明書の発行のためにお金を受け取りたいのですが、セカンダリであるふりをします。



したがって、クライアントには次の3つのオプションがあります。最良を期待して接続を確立するか、ユーザーに警告して(おそらく警告は無視されます)接続を確立するか、接続の確立を拒否してエラーメッセージを表示します。



を含むソフトウェアのかなりの割合 Microsoft .NET Frameworkは、デフォルトでは3番目の方法です。 したがって、たとえば、 ABBYY Cloud OCR SDKサービスが証明書の有効期限が切れた場合、多くのユーザーは、ソフトウェアが単に接続の確立を拒否するため、安全な接続を介して作業することができません。



これは、2月にAzure Storageで起こったこととまったく同じです。 Windows Azureでは、一部のサービスはAzure Storageに依存しています。 そのため、Azure Storageで証明書の有効期限が切れると、サードパーティのユーザーサービスだけでなくWindows Azureサービスの一部でも、証明書の使用が拒否され、変更展開と新しいサービスの作成が中断されました。



そのため、証明書の有効期限が切れると、ユーザーに問題があることがわかります。 証明書の有効期限が切れていない場合でも、サービスが失敗するため、ユーザーにはまだ問題があります。



サードパーティのサービスの証明書を確認する理由を尋ねる気は変わっていませんか?



これは特に難しくありません。 C#で証明書にアクセスするためのコードは最大10行かかります。WebRequestを作成し、サーバーにHTTPリクエストを送信してから、リクエストのServicePoint.Certificateプロパティにアクセスする必要があります。 このようなもの:



var request = (HttpWebRequest)(WebRequest.Create(uri)); using(var response = request.GetResponse()) { } var serverCertificate = request.ServicePoint.Certificate;
      
      





朝のトレーニングインターン向けの簡単なプログラミング演習。 その後、サービスが依存する各サービスのURLに対して、数日ごとに1回このコードを自動的に呼び出すようにします。 同時に、独自の証明書を確認することは有害ではありません。 証明書の有効期限が2週間以内に切れた場合、通知を送信します。 はい、これらの通知に返信できる人がこれらの通知を読んでくれたら嬉しいです。



締め切りの2週間前に証明書の更新を忘れた場合、突然ではなくなります。事前にサービスプロバイダーに連絡し、サポートフォーラムにメッセージを残し、サービス再販業者に相談してください 。アクション。



または、プロバイダを単純に信じて、「それはすべて彼らのせいだ」とユーザーに説明できます。 彼らは責任があるが、だれのユーザーが苦しむだろうか?



ドミトリー・メッシェリャコフ、

開発者製品部門



All Articles