私は iOS アプリを開発していますが、サーバーから返されたデータを自分のアプリだけが読み取ることができるようにしたいと考えています。
そこで、自己署名証明書を作成し、Tornado で https を次のようにセットアップします。
http_server = tornado.httpserver.HTTPServer(applicaton, ssl_options={
"certfile": os.path.join(data_dir, "mydomain.crt"),
"keyfile": os.path.join(data_dir, "mydomain.key"),
})
http_server.listen(443)
サーバーの API を chrome/safari に入力した後、警告が表示されましたが、データはまだ読み取ることができます。
ブラウザには私の証明書とキーのペアがありません。どうして私のサーバーにアクセスしてデータを読み取ることができるのでしょうか?
公的/私的理論によると:
- ブラウザは、証明書に含まれる公開鍵を送信する必要があります
- サーバーが何らかの方法で証明書を信頼する場合、サーバーはブラウザの公開鍵を使用して応答を暗号化します
- ブラウザは応答を受信し、それ自体の秘密鍵を使用して復号化します
ステップ 2 で、私のサーバーはブラウザの証明書を信頼すべきではありません! 私は正しいですか?
ありがとう。