C# PayTrace ゲートウェイに問題があります。以下のコードは、Poodle Exploit のために SSL3 をオフにしたと思われる昨日まで正常に動作していました。以下のコードを実行すると、次のメッセージが表示されました。リモート サーバーが強制的に接続を閉じました。この問題について調査を行った結果、IIS Server 7.5 は引き続き SSL3 を使用するように構成されているため、C# はデフォルトで SSL3 になり、PayTrace が強制的に接続を切断することが判明しました。次に、サーバーから SSL3 を削除しました。これにより、次のエラーが発生します。
クライアントとサーバーは共通のアルゴリズムを持っていないため、通信できません。
私の推測では、SSL 3 が削除されたので、サーバーに追加の SSL アルゴリズムをインストールする必要があると思います。私たちの IT スタッフは、TLS 1.1 と TLS 1.2 は機能しており、ASP.NET は現在それらにデフォルト設定されているはずだと主張しています。しかし、サーバーにインストールする必要があるものが他にあるに違いないと感じています.SSLアルゴリズムの知識がないため、どこから始めればよいかわかりません.
var postUrl = new StringBuilder();
//Initialize url with configuration and parameter values...
postUrl.AppendFormat("UN~{0}|", this.MerchantLoginID);
postUrl.AppendFormat("PSWD~{0}|", this.MerchantTransactionKey);
postUrl.Append("TERMS~Y|METHOD~ProcessTranx|TRANXTYPE~Sale|");
postUrl.AppendFormat("CC~{0}|", cardNumber);
postUrl.AppendFormat("EXPMNTH~{0}|", expirationMonth.PadLeft(2, '0'));
postUrl.AppendFormat("EXPYR~{0}|", expirationYear);
postUrl.AppendFormat("AMOUNT~{0}|", transactionAmount);
postUrl.AppendFormat("BADDRESS~{0}|", this.AddressLine1);
postUrl.AppendFormat("BADDRESS2~{0}|", this.AddressLine2);
postUrl.AppendFormat("BCITY~{0}|", this.City);
postUrl.AppendFormat("BSTATE~{0}|", this.State);
postUrl.AppendFormat("BZIP~{0}|", this.Zip);
postUrl.AppendFormat("SADDRESS~{0}|", this.AddressLine1);
postUrl.AppendFormat("SADDRESS2~{0}|", this.AddressLine2);
postUrl.AppendFormat("SCITY~{0}|", this.City);
postUrl.AppendFormat("SSTATE~{0}|", this.State);
postUrl.AppendFormat("SZIP~{0}|", this.Zip);
if (!String.IsNullOrEmpty(this.Country))
{
postUrl.AppendFormat("BCOUNTRY~{0}|", this.Country);
}
if (!String.IsNullOrEmpty(this.Description))
{
postUrl.AppendFormat("DESCRIPTION~{0}|", this.Description);
}
if (!String.IsNullOrEmpty(this.InvoiceNumber))
{
postUrl.AppendFormat("INVOICE~{0}|", this.InvoiceNumber);
}
if (this.IsTestMode)
{
postUrl.AppendFormat("TEST~Y|");
}
//postUrl.Append();
WebClient wClient = new WebClient();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
String sRequest = "PARMLIST=" + Url.Encode(postUrl.ToString());
wClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
string sResponse = "";
sResponse = wClient.UploadString(PayTraceUrl, sRequest);
また、参考までに、この問題は First Data E4 ゲートウェイに接続するときにも発生するため、PayTrace だけの問題ではありません。私の推測では、より多くのゲートウェイが SSL3 へのアクセスをオフにしているため、サーバーでこれが解決されるまで、他のゲートウェイで問題が発生し続けるでしょう。また、オンラインでいくつかの提案を見つけました。送信リクエストを行う直前に次のコードを配置することを提案した人もいました。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
残念ながら、それも機能しませんでした。同じエラーです。そのため、IIS7.5 サーバーに何か追加でインストールする必要があると考えています。よくわかりません。