TvRockの録画開始などをツイートする仕組みで使っているDioTweetが急遽使えなくなってしまったので調べてみるとどうやらTLSのバージョンが原因らしいということで、使えるようにするための方法を備忘録として残しておく。
なぜ使えなくなったのか
2019年7月30日にTwitterの仕様が変更された。もともとTwitterはTLS1.1での接続を許容していたが、この仕様変更でTLS1.2以上からの接続に限定されてしまった。
DioTweetは.NET Framework2.0を利用して作製されており、.NET Framework2.0はデフォルトでTLS1.2以上に対応していない。そのため、Twitterに接続できなくなってしまっている。
Twitterで検索をかけたらTweetConsoleでも同様な事象が発生しており、以下に記載する方法で解決するようだ。
解決方法
解決方法としては、.NET Framework2.0をTLS1.2で接続できるようにレジストリをいじってやる。正確には.NET Framework2.0の接続方法をOSの既定値に従わせるように設定し、OSの既定値での接続をTLS1.2で接続するように変更する。
この方法はMicrosoftの公式ブログにも記載されている。
.NET Framework2.0をOSの既定値での接続をするように変更
レジストリエディタを起動し、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727」のキーにアクセスする。
レジストリエディタのアドレスバーの所に値を貼り付けてエンターを押せばOK
右クリック→DWORD(32ビット値)をクリック
追加した値の名前を「SystemDefaultTlsVersions」に変更する。
名前を変更したら値をダブクリックして値の編集をする。値のデータを「1」にする。
Windowsが64bitの場合は「HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727」のキーにも同じ値を追加する。
OSの既定値をTLS1.2での接続に変更する
自分の環境の場合、Windows10ではこの設定は不要だった。おそらくデフォルトでTLS1.2以上で接続するようになっているのだと思う。Windows7の場合は以下の設定が必要。
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols\」のキーに新規のキーを追加する。
キーの名前を「TLS 1.2」にする。この際Protocolsのキーの中に別のキーがあった場合は削除する。
作成したTLS 1.2のキーの中に「Client」のキーを作成する。
「Client」のキーの中に新規でDWORD(32ビット)値を作成する。
作成した値の名前を「DisabledByDefault」に変更。
この状態になったらOK。
無事起動できました。
まとめ
ここ最近Twitterクライアントが使えなくなった場合はSSLのバージョンを確認してみるのが良いだろう。
とはいえ本来はアプリ側で対応してもらうのが正しい姿だし、その他の脆弱性が存在しているかもしれない。新しいバージョンが出たらそちらを使おう。
昔に比べて個人でのフリーソフトの開発数も減っているし、使えなくなる寿命が短くなっている気がする。特にインターネットに接続する系のソフトはセキュリティの観点から定期的に更新しないといけないのでしょうがないが、身の回りがほとんどシェアウェアか企業が作った無料ソフトになってきているのを実感する。
コメント