WebクライアントがSSLとTLSに対応しているかどうか
>エラー
WebAPIの呼び出しがうまくいかず「ハマった」話 - 星と月と太陽と
ここで言われている、
リモート パーティがトランスポート ストリームを終了したため、認証に失敗しました。
これが出ました。解消するには、
ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol Or SecurityProtocolType.Tls12
最初のブログで言われているのを参照して、わたしのプロジェクトではSystem.Net.WebClient()をインスタンシングして使うので、そのWebClientインスタンスについて、プロパティを
System.Net.ServicePointManager.SecurityProtocol = System.Net.ServicePointManager.SecurityProtocol Or System.Net.SecurityProtocolType.Tls12
として直りました。インスタンスがデフォルトの設定ではTLS1.2に対応していない(TLS1.2での通信をすることを想定せず、当該企画によって暗号化されたデータを読めない)ということでしょうか。
>SSLとTLSとは
SSLとTLSとは?意外に知らないSSLとTLSの違い(簡単編) - 常時SSl Lab
SSL(Secure Socket Layer)は、インターネット上でやりとりされるデータの「盗聴」「改ざん」「なりすまし」を防止するための暗号化プロトコル(通信方法)です。
現在、通称としてSSLと呼ばれているものは、SSLに変わる新しい仕組みの『TLS(Transport Layer Security)』というものになっています。
httpとhttpsの違いとは?知らないと恥ずかしいWEBセキュリティの基本 - CyberSecurity.com
httpはTLSなし、httpsはTLSありの、サーバ側の運用ということのようです。ちなみに上記修正前のWebClientで、アクセスできたサイトをみると、httpでした。Httpsのサイトへのアクセスの際にはクライアント側もtls1.2が必要ということのようです。普段われわれがWebブラウジングに使っているブラウザもTLS1.2に対応しているのでしょうか。私が普段使っているFireFoxだと、
検索窓にabout:config
security.tls.version.max、minのところを確認、で分かるみたいです。