2017-11-06 20 views
-1

私はクラス関数内でカスタム証明書を渡そうとしていましたが、ハンドシェイクで失敗するため間違ったことをしています。以下のコードをご覧ください。 Pythonで例えばフォワードプロキシ用のVB.NET .NET 4.61でCert.pemをクライアント証明書として使用

Public Shared Async Function RevealViaForwardProxy(ByVal redactData As String) As Task(Of String) 
     Dim proxy = New WebProxy($"http://{forwardProxy}") 
     Dim cert As X509Certificate = X509Certificate.CreateFromCertFile("c:/Users/User/vb/cert.pem") 
     Dim credentials = New NetworkCredential(username, password) 
     proxy.Credentials = credentials 
     Dim client = New HttpClientHandler() 
     client.Proxy = proxy 
     client.BaseAddress = New Uri("https://httpbin.org/") 
     Dim response = Await client.PostAsync("/post", New StringContent(redactData)) 
     Dim responseBody = Await response.Content.ReadAsStringAsync 
     Return JObject.Parse(responseBody)("data").ToObject(Of String) 
    End Function 

ので、誰かが私がやりたいすべてのより多くの文脈/理解を探しているためのように私はそれを行うだろう:

def reveal_via_forward_proxy(tokenized_data): 
r = requests.post(
    'https://httpbin.org/post', 
    data=tokenized_data, 
    headers={"Content-type": "application/json"}, 
    proxies={"https": "https://{}:{}@{}".format(username, password, forward_proxy)}, 
    verify='cert.pem' 
) 
assert r.status_code == 200 
return r.json()['data'] 
+0

提供できるエラーはありますか? "c:/Users/User/vb/cert.pem"はfishyと思われます...おそらく "c:\ Users \ User \ vb \ cert.pem"を試してください – N0Alias

答えて

1

私はあなたがここで解決する問題のカップルを持っていると思います。

  1. PEMファイルを読み込むことはできますが、これは完全な証明書ではなく、クライアント証明書として機能しません。パブリックキーとプライベートキーの両方を持つ証明書ファイル(P12やPFXなど)が必要です。
  2. 証明書をWebリクエストに割り当てていません。私はHttpClientHandlerについて多くの経験がありませんが、ドキュメントからは、HttpClientHandlerをClientCertificatesプロパティを持つWebRequestHandlerにキャストするように見えます。

明快にするために編集 - Pythonコードに基づいて、正しい答えについて下記のコメントをお読みください。クライアント証明書と上記は必要ありません。証明書は信頼される必要があります。

+0

私はこの特定の証明書のために、公開鍵がすでにプロキシ。私が正しくリコールすれば。 – Joe

+0

@Joe、それは本当に問題ではありません。メッセージを送信していてクライアント証明書を含める必要がある場合、送信側システムには公開鍵と秘密鍵が必要です。さらに、この関数を使用するには、1つのファイルにする必要があります。 – GMan80013

+0

私は実際にはルート証明書であるときにクライアント証明書として誤解しているでしょう。ルート証明書として設定すると、Pythonリクエストで動作するからです。 – Joe

関連する問題