2017-03-08 7 views
0

docs for SNS signature verificationは、署名が有効であることを確認するためにSigningCertURLで指定された証明書をダウンロードする必要があることに言及します。SNSメッセージで指定された証明書の確認SigningCertURL

証明書が有効であり(evil.example.comに属していないことを確認するために)、どのような手順を踏む必要がありますか?

ドキュメントには、「証明書がAmazon SNSから受信されたことを確認する」と記載されています。具体的に何を確認する必要がありますか?

答えて

2

証明書のソースを確認すると、指定されたURLのホスト名が有効なsns.${region}.amazonaws.comエンドポイントであることを確認し、SSL証明書検証が無効になっているHTTPSユーザーエージェントを使用していることを確認します。

ほとんどの人は、HTTPSでは、接続を暗号化する過程でWebサーバーの証明書が使用されていることを知っています。証明書は信頼できる認証機関によって署名され、信頼の連鎖が確立され、証明書にはSubjectおよび/またはSubject Alternative Nameフィールドにそれを提示するサーバーのホスト名が含まれます。ホスト名の不一致は、信頼できるCAルートまたは中間(ブラウザ/ユーザーエージェントが信頼できるCAのIDについて既に知っている)と一致しない署名と同様に、サーバーが詐称者であることを意味します。ユーザエージェントは、通常、無効にするためにストレスを取らない限り(例えば、curl--insecureオプションを使用するなどしない限り)、これを自動的に検証します。

URLが賢明であることを確認してから、HTTPSを使用して証明書自体を取得すると、有効な証明書を提示しているサーバーから証明書を取得していることが検証されます。信頼できないソース。

証明書を取得すると、その証明書をメモリにキャッシュしておくことになります。彼らはめったに変化しない。

+0

わかりやすくするために、ダウンロードした証明書自体のプロパティを確認するのではなく、URL自体をチェックして(有効なHTTPS接続を使用していることを確認する)必要があります。 – djd

+0

正しい。証明書の内容は偽造されている可能性がありますが、あなたがSNSから2つの技術で直接取得していることを確認すれば、偽造できる唯一の方法はSNS自体が侵害されることです。 –

+0

注意してください。私はこれを他のもの(おそらくインスタンスID証明書の検証証明書)と組み合わせているのか、あるいはSNSがこれらの証明書をプロビジョニングする方法を変更したのかどうかはわかりませんが、これらの証明書は本当に署名されており、 Symantec CAを介した検証私はこれをさらにテストする必要がありますが、私の答えが完全なストーリーを伝えていないかもしれませんが、このような場合でも、有効なトラストチェーンを持つだけの証明書は十分なテストではありません。証明書の主題は、正式なSNSであることを確認する必要があります。 –

関連する問題