構築中のサーバーでLINEのAPIを呼び出すと「要求は中止されました: SSL/TLS のセキュリティで保護されているチャネルを作成できませんでした」のエラーとなりました。
ローカル環境(自分の端末)だとStatusCodeは「200」(正常)となります。
環境により、以下のようなエラー内容にもなります。
「リモート パーティがトランスポート ストリームを終了したため、認証に失敗しました。」
「接続が切断されました: 送信時に、予期しないエラーが発生しました。。 リモート パーティがトランスポート ストリームを終了したため、認証に失敗しました。」
接続エラー時に「予期しないエラーが発生しました。。」のエラーに遭遇しますが、「。。」が気になります。
LINEがTLS1.2以降対応ということがわかりました。
ニュース: 2021年 の記事 | LINE Developers
エラーが発生した環境:Windows Server 2019(EC2)
諸事情でその他バージョンなどは記載できません。
対応方法
TLS1.0/1.1 を無効化する
レジストリを変更し、サーバー再起動すればOKです。
以下のレジストリキーを新規に追加(あれば追加不要)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server
上記のキー配下それぞれに以下の値を追加
値: Enabled
値の種類: REG_DWORD
設定値: 0
値: DisabledByDefault
値の種類: REG_DWORD
設定値: 1
手動で追加するのが大変なら、ファイル拡張を「reg」にして、ファイルを実行(ダブルクリック)する。
例)tls12.reg
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client] "Enabled"=dword:00000000 "DisabledByDefault"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server] "Enabled"=dword:00000000 "DisabledByDefault"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client] "Enabled"=dword:00000000 "DisabledByDefault"=dword:00000001 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server] "Enabled"=dword:00000000 "DisabledByDefault"=dword:00000001
レジストリを変更したので、サーバーの再起動も必要になります。
LINEのAPIを叩くだけなので、正確にはレジストリキーは「Client」だけ追加すれば大丈夫だと思います。
「DisabledByDefault」無くても正常に動作することは確認済です。
ただセキュリティ的に上記の全てを追加した方が良いです。
以下になっていれば、正しく設定されています。
AWS環境で構成としてはALBにSSL証明書をつけているのですが、サーバーもTLS1.2に対応しないとダメなのですね。
上記の設定で正しく動作しない場合
NET Framework4.6以前の場合は以下の対応も必要
※もしくは上記の設定だけで正しく動作しない場合も実施すること
以下のレジストリキーを新規に追加(あれば追加不要)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
上記のキー配下それぞれに以下の値を追加
値:SchUseStrongCrypto
種類:REG_DWORD
データ:1
手動で追加するのが大変なら、ファイル拡張を「reg」にして、ファイルを実行(ダブルクリック)する。
例)tls12-2.reg
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319] "SchUseStrongCrypto"=dword:00000001
以下、参考にさせて頂いたサイトです。