Skip to main content

 

 

 

 
Language:

 

 
 
 
OutSystems

(.NET)連携でSSLプロトコルを有効にする - TLS 1.1およびTLS 1.2

はじめに

外部サービス(REST、SOAP)との連携を開発する際、多くの場合、特定のSSLプロトコルを使用する必要があります。

  • TLS 1.1

  • TLS 1.2

ただし、このようなAPIをOutSystemsアプリケーションで使用しようとしても、連携がうまく機能せず以下のようなエラーが発生する可能性があります。

  • The request was aborted: Could not create SSL/TLS secure channel.

  • Unsupported procotol.You need to enable TLS X.X to use this API

(必要なSSLプロトコルによっては他のタイプのエラーが発生する可能性もあります)

このようなエラーが表示される原因

.NET Framework 4.5以前では、SSL v3とTLS 1.0という2つのSSLプロトコルがデフォルトで使用されています。

OutSystemsプラットフォームではこれらのデフォルト値が変更されないため、リクエストには(デフォルトで)SSLv3とTLS 1.0のみが含まれます。利用できない別のプロトコルがAPIで必要な場合、このようなエラーが発生します。

この詳細については、「参考資料」セクションのトピックをご覧ください。

解決策

必要なプロトコルを有効にして、リクエストに含めることができます。これを実現するには、以下の2つの手順を実行します。

  • A. サーバーのTLSプロトコルを「Client」として有効にする

続いて、以下のいずれかの手順を実行します。

  • B1.WindowsレジストリのSchUseStrongCryptoプロパティを有効にして、デフォルトのプロトコル(TLS 1.0、TLS 1.1、TLS 1.2)として使用する

  • B2.APIへのリクエストの前に、TLS 1.1プロトコルとTLS 1.2プロトコルのどちらか一方または両方をアプリケーションコードに含める

Cloudユーザーの場合、オプションB2のみを利用できます。

A.サーバーのTLSプロトコルを「Client」として有効にする

TLSプロトコルを有効にするには、Schannel用の新しいレジストリエントリを追加する必要があります[1]。

そのためには、以下の手順を実行します。

1.[Start]をクリックしてから[Run]をクリックし、レジストリエディタを起動します。[Run]フィールドに「regedit」と入力します(鍵括弧は不要)。

2.レジストリツリーの先頭にあるComputerを強調表示します。 [File]をクリックしてから[Export]をクリックし、事前にレジストリのバックアップを取得します。 レジストリファイルを保存するファイルの場所を選択します。 注記: 後で、レジストリを編集します。 正しく編集しないと、コンピュータに悪影響を及ぼすおそれがあります。このため、バックアップを作成することを強く推奨します。

3.以下のレジストリキーを参照します。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

4.Protocolsフォルダを右クリックし、ドロップダウンメニューから[New]を選択してから[Key]を選択します。これにより、新しいフォルダが作成されます。 (有効にするプロトコルに応じて)このフォルダの名前を「TLS 1.1」または「TLS 1.2」に変更します。

5.TLS 1.1キーまたはTLS 1.2キーを右クリックし、その下に新しいキーを追加します。

6.新しいキーの名前を以下のように変更します。

* Client

7.Clientキーを右クリックし、ドロップダウンリストから[New]を選択してから[DWORD (32-bit) Value]を選択します。

8.DWORDの名前を「DisabledByDefault」に変更します。

9.DisabledByDefaultという名前を右クリックし、ドロップダウンメニューから[Modify...]を選択します。

10.[Value]データフィールドが0に設定され、[Base]がHexadecimalになっていることを確認します。 [OK]をクリックします。

11.手順7と同じ手順で、Clientキーに別のDWORDを作成します。

12.この2つ目のDWORDの名前を「Enabled」に変更します。

13.Enabledという名前を右クリックし、ドロップダウンメニューから[Modify...]を選択します。

14.[Value]データフィールドが1に設定され、[Base]がHexadecimalになっていることを確認します。[OK]をクリックします。

15.サーバーを再起動します。

再起動後、サーバーは有効にしたSSLプロトコルを介して通信できるようになります。ただし、そのプロトコルをアプリケーションのリクエストに追加する必要があります。

B1.WindowsレジストリのSchUseStrongCryptoプロパティを有効にして、デフォルトのプロトコル(TLS 1.0、TLS 1.1、TLS 1.2)として使用する

強力な暗号化が有効になっていることと、リクエストのSSLプロトコルがTLS 1.0、TLS 1.1、TLS 1.2であることを確認するには、以下の手順を実行します。

1.[Start]をクリックしてから[Run]をクリックし、レジストリエディタを起動します。[Run]フィールドに「regedit」と入力します(鍵括弧は不要)。

2.レジストリツリーの先頭にあるComputerを強調表示します。 [File]をクリックしてから[Export]をクリックし、事前にレジストリのバックアップを取得します。 レジストリファイルを保存するファイルの場所を選択します。 注記: 後で、レジストリを編集します。 正しく編集しないと、コンピュータに悪影響を及ぼすおそれがあります。このため、バックアップを作成することを強く推奨します。

3.以下のレジストリキーを参照します。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NetFramework\v4.0.30319

4.右ペインを右クリックし、新しいDWORD (32-bit) Valueを作成して「SchUseStrongCrypto」という名前を付けます。

5.[Value]データフィールドが1に設定され、[Base]がHexadecimalになっていることを確認します。[OK]をクリックします。

6.レジストリキーHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NetFramework\v4.0.30319についても手順4と5を繰り返します。

7.サーバーを再起動します。

B2.APIへのリクエストの前に、TLS 1.1プロトコルとTLS 1.2プロトコルのどちらか一方または両方をアプリケーションコードに含める

使用するプロトコルをより高度に制御する必要がある場合は、カスタムエクステンションを使用すると以下の操作を行うことができます。

  • リクエストで利用できる現在のセキュリティプロトコルを取得する

  • TLS 1.1プロトコルを後続のリクエストに追加する

  • TLS 1.2プロトコルを後続のリクエストに追加する

このカスタムエクステンションは、ForgeのManageSecurityProtocolsで入手できます。

注記: Forgeモジュールはコミュニティが作成したものであり、OutSystems Supportでは正式にサポートされていません。

エクステンションに問題がある場合は、Forge([Support]タブ)からお知らせください

これらのプロトコルを使用できるようにするには、特定のプロトコルを必要とするAPIにリクエストを送信する前に、(必要なプロトコルに応じて)いずれかの「AddTLS」アクションを使用する必要があります。

適用対象

.NETスタック、すべてのデータベーススタック上にあるオンプレミスのOutSystemsプラットフォーム。

Platform 9.0.x.yおよび9.1.x.yに適用されます(最終確認は9.1.600.0)。

  • Was this article helpful?