0

この API を呼び出すと、 が取得されますinvalid certificate

この問題を解決するにはどうすればよいですか?

 string res = string.Empty;
 string str = context.Request["params"].ToString();

 string json = new JavaScriptSerializer().Serialize(new
 {
   login = "aaa",
   password = "ssss",
   command = "ssl_decoder",
   ssl_certificate = str
 });

 var httpWebRequest = (HttpWebRequest)WebRequest
    .Create("https://api.sslguru.com?params="+str.Normalize());

 httpWebRequest.ContentType = "text/json";
 httpWebRequest.Method = "POST";

 using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
 {
    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
      res = streamReader.ReadToEnd();
    }
 }

 return res;
4

2 に答える 2

0

リクエストが SSL 接続を構築しているため、エラーが発生invalid certificateしますが、実際には非 SSL ポート 80 に接続します。HttpWebRequest が SSL ハンドシェイクを待機している場合、サーバーは通常の HTML ページを返します。そして、それは証明書のエラーを与えます。

SSL を使用する場合は、UriBuilderを使用して明示的に Uri を作成し、SSL が構成されているサーバーポートを指すようにします。

var httpWebRequest = (HttpWebRequest)WebRequest
    .Create(new UriBuilder("https", 
                           "api.sslguru.com", 
                            443, /* THE PORT THAT IS CONFIGURED FOR TLS/SSL */
                            "", 
                            "?params="+str.Normalize()).Uri);

または、あなたがクイックフィックスタイプの開発者である場合:

var httpWebRequest = (HttpWebRequest)WebRequest
    .Create("https://api.sslguru.com:443?params="+str.Normalize());
于 2014-02-08T21:09:28.017 に答える