2016-11-24 11 views
0

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"を使いましたが、残念ながらそれは問題を解決しませんでした。

私が間違っていることは何ですか?たぶん私はチェーン内のすべての証明書を含める必要があります。どうすればいい?

+0

サーバーがhttpsでいくつかの完全なURLを送り返す場合は、httpへのHTTPSをダウングレード問題に実行しますスキームで指定されています。したがって、クライアントにhttpsも使用させる必要があるかもしれません。単なるサイトであれば、TCPプラグインのようなものを使用して、クライアントに接続するためのTLSアップストリーム(および/またはダウンストリーム)をDNSで行うことができます。または、完全なhttpまたはhttps検査プロキシを使用することもできます。 – Adrien

答えて

1

私はそこにそれらを追加しなかったものの、リモート・サーバは、(それがWindows上でmitmdumpで使用されている?)、デフォルトでは信頼されたルート証明書ストアにないCA証明書とサブ証明書を使用しています。

OSストアを使用したいのですが、OpenSSLでは簡単にはできません。 Mitmproxyは現在certifiを使用しています。あなたが言及したように、--upstream-trusted-caはこれを修正する正しい方法です。あなたはサーバーによって送信されていない中間CAを持っている場合は、このようなあなたのPEMファイルを構築する必要がある場合があります

-----BEGIN CERTIFICATE----- 
<cert> 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
<intermediary cert (optional)> 
-----END CERTIFICATE----- 
関連する問題