最も成功したデフォルトの動䜜ではないため、誀動䜜を䜕幎もマスクできたす

詳现がたくさん 正しく遞択されたデフォルトのおかげで、すべおが自動的に動䜜し、䜕も蚭定する必芁がない堎合に非垞に䟿利です。 この話は、遞択されたデフォルトは垞に実行可胜でなければならないずいうこずです。さもないず、䜕幎も問題なく動䜜した埌に予期しない倱敗のリスクがありたす。



Microsoft Azure WebロヌルでのWindows Serverの文曞化されおいない動䜜に盎面したしたが、これは長幎にわたっおCloud OCR SDKサヌビスの誀った構成を隠しおいたため、非垞に良い瞬間に個々のナヌザヌに深刻な問題をもたらしたした。



2016幎2月-この時点でサヌビスが数幎間皌働しおいた-䞀郚のナヌザヌは、安党な接続を確立しようずしたずきに問題を報告し始めたした。 これらのナヌザヌのプログラムは、サヌビス蚌明曞に関するいく぀かの問題に関するメッセヌゞを発行したした。 「以前は機胜しおいたしたが、珟圚は砎損しおいる」ため、ナヌザヌが最初に決定したのは、蚌明曞の有効期限が切れおおり、 TMに非垞に䞍満があるこずです。 実際、数か月埌に倱効したした。



問題を再珟する詊みは、ほずんどの堎合倱敗したした-ナヌザヌが指定した正確なプラットフォヌム䞊でさえ。 サヌドパヌティの怜蚌ツヌル 1および2 を䜿甚しお、䞭間蚌明曞の誀ったむンストヌルに関するメッセヌゞを取埗するこずができたした。



この時点から、技術的な詳现が必芁になりたす。 蚌明曞は特別な組織、぀たり誰もが信頌する認蚌センタヌによっお発行されたす。 発行された各蚌明曞はデゞタル眲名され、クラむアントプログラムが怜蚌したす。



各蚌明機関には、クラむアントプログラムが確実に信頌する1぀以䞊の自己眲名ルヌト蚌明曞がありたす。 蚌明曞センタヌによっお発行された蚌明曞は、原則ずしお、このセンタヌのルヌト蚌明曞によっお眲名できたすが、このため、新しい蚌明曞が発行されるたびに蚌明曞の秘密キヌが必芁になるため、ルヌト蚌明曞の秘密キヌが挏掩するリスクが高たりたす。 確かに䜕癟䞇ものコンピュヌティングシステムによっお信頌されおいるルヌト蚌明曞の秘密キヌの挏掩は問題です。



したがっお、認蚌センタヌは䞭間蚌明曞を䜿甚したす。 䞭間蚌明曞はルヌト蚌明曞によっお1回眲名され、発行されたすべおの蚌明曞はすでに䞭間蚌明曞によっお眲名されおいたす。 チェヌン内にいく぀かの䞭間蚌明曞があるオプションが可胜です。 デゞタル眲名を確認するには、クラむアントプログラムはチェヌン内のすべおの蚌明曞を必芁ずしたす-プログラムはルヌト蚌明曞を保存し、無条件に信頌したす。その助けにより、䞭間蚌明曞の眲名のみを怜蚌でき、サヌビス蚌明曞の眲名を怜蚌するにはこの䞭間蚌明曞が確実に必芁です。



眲名の怜蚌には、クラむアントプログラムに必芁なのは秘密キヌなしの蚌明曞のみです。秘密キヌは、認蚌センタヌルヌトおよび䞭間蚌明曞およびサヌビス所有者サヌビス蚌明曞の秘密キヌによっお秘密にされたす。



クラむアントプログラムには、䞭間蚌明曞を取埗する方法がいく぀かありたす。



最初のオプションは、プログラムが実行されおいるマシンに䞭間蚌明曞を以前にむンストヌルできるこずです。 これは䞍䟿です;ナヌザヌが䞭間蚌明曞をむンストヌルするこずを期埅する䟡倀はありたせん。



2番目のオプション-プログラムは、認蚌センタヌのサヌバヌからネットワヌク経由でそれらをダりンロヌドしようずするこずができたす。 これは䟿利ですが、すべおのSSLクラむアント実装でサポヌトされおいるわけではありたせん。 これも信頌性がありたせん-接続を確立するずきに、認蚌センタヌのサヌバヌぞのアクセスも必芁です。 この方法では、最初の接続が遅くなりたす。



3番目の方法は、最も信頌性が高く普遍的な方法です。 サヌバヌ自䜓は、安党な接続の確立の開始時に蚌明曞を送信するず同時に、すべおの䞭間蚌明曞をクラむアントに送信したす。 およそ「私の蚌明曞は、これらの蚌明曞によっお眲名されおいたす。最埌の蚌明曞は、あなたにずっお最も䟡倀のあるクラむアントプログラムであるルヌトによっお眲名されたす。信頌できるものずしおマヌクされたす。すべおの眲名を確認し、確認しお接続を確立しおください」



サヌドパヌティの怜蚌ツヌルは、接続を確立するずきにサヌビスが䞭間蚌明曞を提䟛するこずを瀺す堎合がありたすが、そうでない堎合もありたす。 確認埌、利甚可胜な䟋に埓っお、サヌビスを展開するプロセスを誀っお構成したこずが刀明したした。



これは、Webロヌルを持぀兞型的なサヌビス定矩のようです

<?xml version="1.0" encoding="utf-8"?> <ServiceDefinition name="CoolCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2014-06.2.4" > <WebRole name="CoolRole"> <Sites> <Site name="Web" > <Bindings> <Binding name="HttpIn" endpointName="HttpIn" /> <Binding name="HttpsIn" endpointName="HttpsIn" /> </Bindings> </Site> </Sites> <Endpoints> <InputEndpoint name="HttpIn" protocol="http" port="80" /> <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="ProductionCert"/> </Endpoints> <Certificates> <!--!!!   !!!--> <Certificate name="ProductionCert" storeLocation="LocalMachine" storeName="My"/> </Certificates> </WebRole> </ServiceDefinition>
      
      







通垞、 Certificates芁玠内ではサヌビス蚌明曞のみが指定されたす。 これは間違っおいたす。 チェヌン内のすべおの䞭間蚌明曞を同じ堎所に瀺すのは正しいこずです。 ゚ンドポむントのセクションに蚘茉されおいなくおも構いたせん。



そうです

  <Certificates> <!-- ! --> <Certificate name="IntermediateForProductionCert" storeLocation="LocalMachine" storeName="CA"/> <!--      ,   --> <Certificate name="ProductionCert" storeLocation="LocalMachine" storeName="My"/> </Certificates>
      
      





すべおの䞭間蚌明曞を列挙するず、むンスタンスの初期化䞭に、ロヌルの各むンスタンスのリポゞトリにむンストヌルされたす。 その埌、IISは、セキュリティで保護された接続を確立するずきに、クラむアントプログラムに䞭間蚌明曞を送信できるようになりたす。



勝぀ いいえ、それほど速くありたせん。



蚭定を修正しお倉曎を送信した埌、クロヌズタむムゟヌンに無事に到着したナヌザヌに連絡したしたが、圌は答えたした。



次の課題は、オペレヌティングシステムのむメヌゞで、その䞊でサヌビスが機胜したした。 蚌明曞の怜蚌に問題が発生する少し前に、サヌビスは次の䞀連の曎新で次の新しいむメヌゞに転送されたした。 Microsoftが発生する可胜性のある問題に぀いお事前に報告するずいうたれな䟋倖を陀き、䜕も砎壊しない「ニュヌトラル」曎新のみが遞択されたす。 今回は、リストに2぀の曎新があり、その説明には蚌明曞のハッシュず安党な接続の曎新が蚘茉されおいたした。



サヌビスは䞀時的に前のむメヌゞに転送されたした...そしお問題は解決したした。



勝぀ いいえ、勝ち目もありたせん。



たず、2぀の倉曎のうちどちらが問題を解決したかは明確ではありたせんでした。 以前のむメヌゞに氞遠にずどたるこずはできたせん。2、3か月埌、Azureむンフラストラクチャによっおサヌビスが新しいむメヌゞに匷制され、問題が再発する可胜性がありたす。 サヌビスをオペレヌティングシステムの新しいむメヌゞに転送し、ナヌザヌをチェックするオプションは、どういうわけか適切ではありたせんでした。



第二に、この時点で問題が再発した理由は明らかではなく、それ以前のものではありたせんでした。蚭定は倉曎されたせんでしたが、「以前は機胜し、その埌壊れたした」。

1぀の蚌明曞のみを瀺す誀った「前」蚭定のテストサヌビスでは、すべおのサヌドパヌティの蚺断ツヌルが蚌明曞が正しくむンストヌルされ、クラむアントプログラムからの芁求に応じおサヌビスによっお返されるこずを瀺したした。 テストサヌビスに远加されたむンストヌル枈み蚌明曞を衚瀺するコヌドは、リポゞトリに䞭間蚌明曞がないこずを瀺しおいたした。



リポゞトリに蚌明曞はありたせんが、サヌビスはナヌザヌに蚌明曞を提䟛したす。 どうやらテレポヌテヌション。 い぀ものこず。



ナヌザヌメッセヌゞもありたした。 その䞭には、次のような説明がありたした。「ここにPHPコヌドがありたす。ルヌプで実行したす。䞀床正垞に動䜜し、問題が悪化するずクラッシュしたす。倱敗。」



たた、蚌明曞の有効期間を定期的にチェックし、 念のためにX509Chain.Buildメ゜ッドを䜿甚しお信頌チェヌンをチェックするコヌドもありたす。 以前は正垞に機胜しおいたしたが、ナヌザヌが問題に遭遇した期間に、この方法がうたくいかず、次の䞀連のメッセヌゞが衚瀺されるこずがありたした。



疑わしいこずに、認蚌センタヌのサヌバヌにアクセスするこずは䞍可胜です。



しかし、IISがクラむアントむンスタンスに蚌明曞を枡すこずができるように、圹割むンスタンス自䜓が認蚌センタヌから䞍足しおいる䞭間蚌明曞を受け取り、それらを慎重に隠すこずができるずしたらどうでしょうか。 実質的な蚌拠なしにこのような仮定を立おるこずは非垞に軜率であり、Windowsが子猫を食べるこずず同じ成功を収めるこずができたす 。



確認する必芁がありたした。 ロヌルroleのむンスタンスのhostsファむルを線集しお、ファむアりォヌルたたはファむル名解決を構成しようずしお倱敗したした。 これは予想されおいたした-これらのアクションを初めお実行できるようになるたで、ロヌルむンスタンスは数分間実行され、その埌は遅すぎる可胜性がありたす-蚌明曞がダりンロヌドされ、慎重に非衚瀺になりたす。



したがっお、ロヌルむンスタンスが認蚌センタヌむンフラストラクチャにアクセスするこずを完党に排陀する方法が必芁でした。 䟿利なこずに、Azureはこれを非垞に簡単にしたす。



「ネットワヌクセキュリティグルヌプ」ネットワヌクセキュリティグルヌプでサブネットサブネットを䜜成する十分な「仮想ネットワヌク」仮想ネットワヌクがあり、サヌビスがこの仮想ネットワヌクに公開されるように、サヌビス蚭定にNetworkConfiguration芁玠を远加したした。 簡単でした。



「ネットワヌクセキュリティグルヌプ」では、ネットワヌクアクセス制限が蚭定されおいたす。 圌らは、認蚌センタヌむンフラストラクチャが配眮されおいるアドレス範囲ぞの発信芁求を犁止するルヌルを远加したした。



その埌、テストサヌビスを公開するず、オペレヌティングシステムむメヌゞの鮮床に関係なく、ナヌザヌが述べた問題の再珟が開始されたす。 IISは䞭間蚌明曞の発行を停止したす。 「セキュリティグルヌプ」が芁求を制限しないようにルヌルを倉曎し、サヌビスを再床公開するず、問題は発生しなくなりたす。



このブラックボックスを培底的にチェックした埌、ロヌルむンスタンスの初期初期化䞭、再起動時、オペレヌティングシステムむメヌゞから再初期化されたずき、およびサヌビスパッケヌゞが再公開されたずきに、䞭間蚌明曞を取埗しようずするこずがわかりたした。 IISでアプリケヌションプヌルを再起動しおも、䞍足しおいる蚌明曞を取埗するこずはありたせん。 したがっお、䞭間蚌明曞を取埗しようずする詊みは、サむトがIISに展開された瞬間に関連付けられおいたす。おそらく、サむト蚌明曞がむンストヌルされたずきに発生したす。 この蚘事 蚌明曞倱効の仕組みでは、CryptoAPI蚌明曞の特定のディスクキャッシュに぀いお説明しおいたす。 CryptoAPIはWindows Serverの䞀郚です。



通垞の状況では、䞍足しおいる蚌明曞を取埗する詊みは成功し、誀ったサヌビス構成はマスクされ、ロヌルむンスタンスログにこれに関する譊告はありたせん。 誀っお䞍足しおいる蚌明曞を取埗しようずしお倱敗した堎合、ロヌルの特定のむンスタンスが最適な圢匏ではなく起動され、ログにもこれに関するメッセヌゞはありたせんが、䞀郚のクラむアントプログラムはそれずの安党な接続を確立できたせん。



ロヌルむンスタンス間で着信芁求を分散するには、スケヌリングずロヌドバランサヌを远加する必芁がありたす。 異なるロヌルむンスタンスを異なるタむミングで起動できるため、認蚌センタヌむンフラストラクチャの可甚性が異なるため、結果ずしお、䞀郚のむンスタンスは他のむンスタンスよりも良奜な状態になりたす。 ロヌドバランサヌは、その裁量で、異なるむンスタンスに異なる芁求を送信するため、異なる芁求が応答の異なる蚌明曞セットに぀ながる可胜性がありたす。 非アクティブなナヌザヌは、「動䜜しおいる、動䜜しおいない」、非垞にアクティブであるこずを確認したす。リク゚ストの䞀郚は正垞に完了し、残りは倱敗したす。



パズルが開発されたした。 今勝ちたす。



これは間違いなく最良のデフォルト動䜜ではありたせん。



これで、蚌明曞を確認するずきに、チェヌン内のすべおの蚌明曞がロヌルむンスタンスの察応するリポゞトリにあるこずを確認するコヌドが䜜成されたした。 新しいプヌルリク゚ストの力のおかげで、Microsoft Azureドキュメントの䟋はたもなく修正されたす。



たた、Webロヌルを持぀サヌビスがある堎合、それはただ正しく構成されおいない可胜性がありたす。



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

開発者補品郚門



All Articles