TLS 1.1 & 1.2をサポートしていない複数のマシンがあり、接続しようとしているサーバが古いプロトコルをサポートしなくなります。いずれにしても、それらはすべて中央サーバーを介してトンネリングしています。自己署名入りアップストリーム証明書を使用したリバースプロキシモードのMitmproxy
アイデアは、中央サーバ上でリバースプロキシとしてmitmdumpを実行することです。クライアントはhttpsの代わりにリバースプロキシをリモートサーバーに送信し、次にTLS 1.2経由でリモートサーバーと通信します(より良い/より単純なソリューションがあると思うなら助言してください)。
私はこれをローカルでテストしています。そのため、クライアントは、http:// localhostにhttpを送り、そこでmitmdumpが実行されています。
これは私がmitmdumpを実行する方法を示します。
mitmdump -R https://remotehost:port --port 8844 --upstream-trusted-ca "C:\fullpath\root_ca_pem.cer"
そして、これは私が得るものです:
127.0.0.1:54547: clientconnect
127.0.0.1:54547: POST https://remotehost:someport/
<< Certificate Verification Error for remotehost: unable to get issuer certificate (errno: 2, depth: 1)
127.0.0.1:54547: clientdisconnect
リモートサーバがによって信頼されたルート証明書ストアにないCA証明書とサブ証明書を使用していますデフォルトでは、私はそこに追加しましたが(ウィンドウ上のmitmdumpによって使用されていますか?)だから私は "--upstream-trusted-ca"を使いましたが、残念ながらそれは問題を解決しませんでした。
私が間違っていることは何ですか?たぶん私はチェーン内のすべての証明書を含める必要があります。どうすればいい?
サーバーがhttpsでいくつかの完全なURLを送り返す場合は、httpへのHTTPSをダウングレード問題に実行しますスキームで指定されています。したがって、クライアントにhttpsも使用させる必要があるかもしれません。単なるサイトであれば、TCPプラグインのようなものを使用して、クライアントに接続するためのTLSアップストリーム(および/またはダウンストリーム)をDNSで行うことができます。または、完全なhttpまたはhttps検査プロキシを使用することもできます。 – Adrien