ASP.NET 2.0 Webサイトは、Authorize.NetのAPIへの呼び出しを介してクレジットカードトランザクションを処理します。 Authorizeは、発表される特定の日に、クライアントmust API呼び出しにTLS 1.2プロトコルを利用することを通知しました。
Microsoftは、この10-22-16 KB記事で解決策が利用可能であることを示しているようです: https://support.Microsoft.com/en-us/help/3154517/support-for-tls-system-default -versions-included-in-the-.net-framework-2.0-sp2-on-windows-Vista-sp2-and-server-2008-sp2
... TLS v1.2、TLS v1.1、およびターゲット時のServicePointManager.SecurityProtocolプロパティのオペレーティングシステムのデフォルトを設定するためのオプションとして使用できるSslProtocolsExtensions列挙を追加しました.NET frameworkバージョン2.0 SP2。
この記事のタイトルにもかかわらず、上記の引用はnotを指していることに注意してください。これらのオペレーティングシステムはTLS v1.1および1.2をサポートしていないためです。
次の手順を実行して、KB記事に示されているソリューションの理解を実装し、テストしました。
残念ながら、アプリケーションを実行すると、上記の項目#3に示されているコード行で次のエラーが発生します。
System.NotSupportedException:要求されたセキュリティプロトコルはサポートされていません。
この時点で、私は困惑しています。このソリューションをどのように進めるかについての洞察は特にありがたいですが、ASP.NET 2.0アプリケーションからのAPI呼び出しでTLS 1.2を利用できるようにするために知っている他のアプローチについて学ぶことに興味があります。 (.NETフレームワークの最新バージョンへのアップグレードは最後の手段です。)
よろしくお願いします!
.NET 2.0アプリでTLS 1.2に移行する必要があり、コードを.NET 4.5/4.6に移植したくありませんでした。数日間の調査の後、この投稿に出会った後、解決策を見つけました。この投稿は間違ったHOTFIXを参照しています。 Server 2008 R2上の.NET 2.0でTLS 1.2を機能させるには、このHOTFIXが必要です: https://support.Microsoft.com/en-us/help/3154518/support-for-tls-system-default- version-included-in-the-.. net-framework
3.5.1フレームワークを参照しますが、2.0フレームワークでも動作します。修正プログラムがインストールされると、サーバーでレジストリの変更を行うことができますOR TLS 1.2を直接参照するようにアプリでコードを変更します。
C#ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
VB ServicePointManager.SecurityProtocol = DirectCast(3072、System.Net.SecurityProtocolType)
他のOSについては、Troy Starrの投稿をチェックしてください: https://community.qualys.com/thread/16917-net-framework
お役に立てれば
このスレッドを見つけた人は誰でも、上記の元の質問で説明したのと同じ手順(#1〜#4)を使用して、TLS 1.2を.Net 3.5で動作させることができました。 Win 2012サーバーにパッチを適用すると(共有ホスティング会社は十分に適用できました)、API呼び出しの前にTLS 1.2を有効にするコード行を追加すると、すぐに機能しました。
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolTypeExtensions.Tls12;
私はこの質問が少し古いことを理解しています-しかし、他の人の助けのために私たちのために働いた-そして私たちのAuthorize.Netトランザクションは現在、私たちの.NET 2.0 AbleCommerceアプリケーション上のTLS 1.2で動作します。 [生産の移行期限は2018年2月28日まで延長されたようです]
環境:Windows Server 2008 R2、IIS 7.5、AbleCommerce 7.0.2 build 11659、CommerceBuilder.AuthorizeNet 7.0.9764.0
上記の@JoeBoxerの回答によると、 このリンク はトリックを行いました-具体的にはx64ベースのシステムの2つのレジストリキーを設定しました(リストされたパッチはボックスにインストールされません):
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727]
"SystemDefaultTlsVersions"=dword:00000001
また、TLS 1.2のエントリがなかったため、 this を行いましたが、これだけでは問題は解決しませんでした。
AS TLS 1.2はasp.net 2.0をサポートしていません。プロジェクトをasp.net 2.0から最新/上位バージョンに移行せずにTLS 1.2を実装する別の方法があります。手順は次のとおりです。
以下にサンプルコードを示します。
[WebMethod]
public LoginResult TestLogin(string _username, string _password, string _tokenID)
{
try
{
System.Net.ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)3072;
LoginResult _loginResult = new LoginResult();
_loginResult = _sForceRef.login(_username, _password + _tokenID);
return _loginResult;
}
catch (Exception e)
{
throw e;
}
finally
{
}
}
Reference
namespace System.Net
{
[System.Flags]
public enum SecurityProtocolType
{
Ssl3 = 48,
Tls = 192,
Tls11 = 768,
Tls12 = 3072,
}
}