問題タブ [hostname-verifier]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flutter - Dart/Flutter HttpClient のカスタム SSL ホスト名ベリファイアを作成する方法
複数のデバイスがあり、それぞれが独自の CA によって署名された X509 証明書を使用して HTTPS サーバーを公開しています。クライアントはローカル ネットワーク内の IP によってこれらのサーバーを呼び出しますが、IP は事前にわかっていないため、証明書には IP が含まれていませんが、カスタム (解決できない) DNS 名が付けられています。
クライアント側 (現在はモバイル アプリ) では、dart HttpClientをSecureContextと共に使用して、CA の証明書をTrustedとして設定し、サーバーを呼び出しています。
ただし、証明書は CA によって署名されていますが、証明書名がサーバーの呼び出しに使用されるローカル IP アドレスと等しくないため、証明書の検証と接続は失敗します。
このユースケースは、 HostnameVerifierを許可する Android/Java でサポートされています。また、 iOS でSecPolicyCreateSSLを使用してそれを行うことも可能であるようです。
したがって、各プラットフォームで Flutter プラグインを作成することもできますが、BoringSSL を使用して SecureSocket を構築する Dart でこれを直接サポートするのが正しいアプローチであると思われます。
ホスト名検証を可能にする Dart lib を作成しようとしています。HttpClient が使用するSecureSocketを何らかの方法でオーバーライドする必要があると思いますが、Dart に含まれている BoringSSL ライブラリを直接呼び出す必要があるかどうかはわかりません (どのように私はそれをしますか?) またはうまくいけば、純粋に Dart でそれを行います。
この検証はopensslで実行できるようです。また、BoringSSL のhandshake_client.ccには、必要なもののほとんどが含まれているようです。
Dartでこれを達成する方法について、誰かが私にいくつかのアイデア/ヒントを教えてもらえますか?
ところで、私はbadCertificateCallbackを試しましたが、一貫してサーバー証明書を返しません。Android ではリーフ/サーバー証明書を返し、iOS では発行者 CA 証明書を返します。いずれにせよ、サーバー証明書が実際に CA によって正しく署名されていることを検証するのに十分なデータが含まれているようです。
python-3.x - pandas データフレームで複数の電子メール ホスト名を確認する最も効率的な方法は何ですか?
各メールアドレスのホスト名の列を持つパンダデータフレームがあります( 1000行以上):
各ホスト名を調べて、それが本当に存在するかどうかを確認したいと思います。
まず、各メール アドレスのホスト名を抽出しました。
次に、 を使用して DNS を確認しようとしましたpyIsEmail
が、遅すぎました。
次に、マルチスレッド関数を試しました:
しかし、私は並列関数にかなり慣れていないので、それもうまくいきませんでした。複数のエラーがあり、このホスト名がすでにチェックされているかどうかを最初にチェックして、リクエスト全体をもう一度スキップできれば、はるかに有益であると思います。実際にメールを送信せずに、できる限り行きたいと思います。
これを達成するためのライブラリまたは方法はありますか? これまでのところ、この問題の適切な解決策を見つけることができませんでした。
c# - 自分のハードウェアと LAN ネットワーク上のアプリケーションをリンクする最良の方法は何ですか?
イーサネット通信を備えたマイクロコントローラーに基づくハードウェアがあります。
マイクロコントローラには TCP サーバーがあります。
ハードウェアを構成するために、Android 用の C# で作成されたアプリケーションがあります。
次に、アプリケーションには TCP クライアントがあります。
アプリがハードウェアを見つけるために、私が行っていることは、モバイルの同じネットワーク セグメントの各アドレスに ping を実行することです。つまり、私のモバイルの IP アドレスが 192.168.0.xx の場合、アドレス 192.168.0.1 からアドレス 192.168.0.255 に ping を実行します。
応答するアドレス、ソケットを開いてデータ フレームを送信しようとします。答えが正しければ、ローカル ネットワークにハードウェアが見つかったと想定します (複数のハードウェアが接続されている可能性があります)。
明らかに、応答しない IP アドレス、ソケットを開くことができない IP アドレス、または何か間違ったことに応答する IP アドレスは破棄されます。
これらの有効なアドレスがリストに表示され、ユーザーは対話するアドレスを選択できます。
また、これらの有効なアドレスはアプリケーションに保存されるため、次にアプリを開いたときに、保存されたアドレスに自動的に接続され、IP アドレスのスキャンが回避されます。
これは、ユーザーが初めてハードウェアをインストールしてアプリで構成したときに正しいように思えます
問題は、ルーターが月に 1 回 IP アドレスを更新するように構成されているというユーザーがいると知らされたことです。
これが発生した場合、アプリはすべての IP アドレスのスキャンを再度実行する必要があります。すべての IP のスキャンには時間がかかるため、これはやや面倒です。月に 1 回アプリとハードウェアを構成することにユーザーが満足しているとは思えません。
別の厄介な解決策として、静的 IP アドレスを使用することも考えられますが、それも良い考えではないと思います。
これを改善する方法について何か提案はありますか?