CoreTweetでTLS1.2へ移行したTwitterへの対応 | マティエのブログ

マティエのブログ

SE 且つ ゲーマーの日記

まずは起きた事象から

 

自作してたtwitter連携のツールがエラーを吐いた

 

出だしたのは2019/7/30からで、C#のツールが吐いたのはSystem.Net.WebException

メッセージ:接続が切断されました: 送信時に、予期しないエラーが発生しました。

 

メッセージとかでググって見るとこんなページがちらほら見つかる→こちら

 

ただ、Exceptionの内容のとおり、エラー吐いてるのは、CoreTweetのライブラリで、自作してる箇所じゃない。

 

ということで、以下対応した手順のメモ

 

GitHubから、Coretweetのソース・プロジェクトをダウンロード (右上のClone and Downloadボタン)

 

②VisualStudio2017でプロジェクトを開く (C#6.0を読み込む必要があるため、古いのではダメっぽい)

 

③そのままビルドすると、RestApis.csというファイルが無くてエラーになるので、RestApisGenプロジェクトを右クリック→[Set as StartUp Project]をクリックして、実行すればRestApis.csができる

 

※ここでコンパイルが通るようになる

 

④CoreTweet.Shared-Internaiの中にあるRequest.csを開いて、以下の赤字部分を追加

 

        internal static HttpWebResponse HttpPost(Uri url, string contentType, byte[] content, string authorizationHeader, ConnectionOptions options)
        {
            if (options == null) options = ConnectionOptions.Default;
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
            var req = (HttpWebRequest)WebRequest.Create(url);

 

⑤リビルドすると、CoreTweet.net35と.net40では、Tls11とTls12が見つからずエラーになるけど、.net45はコンパイルが通るはず。

 

⑥出てきたCoretweet.dllを差し替えて対応完了

 

感想

付け焼刃の知識しかないから、C#6.0をVS2013がサポートしてないのを知らなかったりで、一つ一つの原因究明に時間がかかってしまった。

ただ、自力で対応しきれたのは良かったかなと。。。

 

その他

世間でも影響出てたみたいですね。。。yahooニュース